Иконка ресурса

ChangeTeamPlayer 1.0

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
  • Автор ресурса
  • #1
Пользователь Lisoh разместил новый ресурс:

ChangeTeamPlayer - Позволяет переместить игрока и команды, сделать автобаланс команд.

Позволяет переместить игрока и команды, сделать автобаланс команд.
Как использовать? В админ меню > управление игроками.

Посмотреть скриншоты:
qZq9xs8RREU.jpg


Z_-jw6VWOJI.jpg


dUzan9QXmLk.jpg


oX6BAviG66U.jpg
...

Узнать больше об этом ресурсе...
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,920
  • Команда форума
  • #2
Ну что ж, начнём.

Имена глобальных переменных сложно читаются...

PHP:
hMenu.SetTitle("Выберите игрока: \n \n");
Тут \n последний - лишний.
PHP:
hMenu.SetTitle("Выберите игрока: \n ");

PHP:
char id[15]
Компилятор слегка изменяет размеры массивов. В случае со строками, увеличивает, чтобы размер делился на 4 без остатка.
Со всеми другими типами - чтобы делился на 2 без остатка.
PHP:
char id[16]

PHP:
       hMenu.AddItem("спекторы", "За спекторы");
       hMenu.AddItem("террористы", "За террористов");
       hMenu.AddItem("контр-террористы", "За контр-террористов");
Т.к. в каллбеке не проверяется info-строка, можно оставить её пустой.
PHP:
       hMenu.AddItem("", "За спекторы");
       hMenu.AddItem("", "За террористов");
       hMenu.AddItem("", "За контр-террористов");

PHP:
void DeleteInfo(int iClient)
{
   g_sQueue[iClient] = "";
   g_sTeam[iClient] = "";
-->
PHP:
void DeleteInfo(int iClient)
{
   g_sQueue[iClient][0] = 0;
   g_sTeam[iClient][0] = 0;

И непонятно, зачем глобально хранятся строки, которые выводятся в меню/чате.
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
  • Автор ресурса
  • #3
И так погнали :ab:

Тут \n последний - лишний.
Не лишний, я всегда так делаю, по своим чувствам. Чекай мои плагины.

Компилятор слегка изменяет размеры массивов. В случае со строками, увеличивает, чтобы размер делился на 4 без остатка.
Со всеми другими типами - чтобы делился на 2 без остатка.
Приму к сведению.

Т.к. в каллбеке не проверяется info-строка, можно оставить её пустой.
Серьезно? А ну попробуй)
PHP:
hMenu.GetItem(option, g_sTeam[g_iTarget[iClient]], sizeof(g_sTeam[]));

void DeleteInfo(int iClient)
{
g_sQueue[iClient][0] = 0;
g_sTeam[iClient][0] = 0;
Такое чувство как будто ты все из пальца высосал :glare:
По моему это ничего не меняет.

И непонятно, зачем глобально хранятся строки, которые выводятся в меню/чате.
Информацию в меню я как по твоему получаю? Есть другие варианты?:flood:
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
  • Автор ресурса
  • #5
лишний. \n не работает если он последний символ в строке. Так что пробела после него достаточно.

giphy.gif
об этом не знал...

Кое что забыл вписать, маленькие поправки внесу.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,920
  • Команда форума
  • #6
Не заметил, но всё равно. Можно там захардкодить нормально имя команды в зависимости от номера.
PHP:
               switch(option)
               {
                   case 0: g_iTeam[g_iTarget[iClient]] = 1, g_sTeam[g_iTarget[iClient]] = "спекторы";
                   case 1: g_iTeam[g_iTarget[iClient]] = 2, g_sTeam[g_iTarget[iClient]] = "террористы";
                   case 2: g_iTeam[g_iTarget[iClient]] = 3, g_sTeam[g_iTarget[iClient]] = "контр-террористы";
               }

Информацию в меню я как по твоему получаю?
У тебя везде хранятся индексы команд, игрока и выборов. Так не проще по этим номерам и выводить нужную строку, а не хранить глобально в нескольких количествах одну и ту же информацию?
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
  • Автор ресурса
  • #7

pentaxist

Участник
Сообщения
495
Реакции
91
Баланс только в ручном режиме? Или автобаланс тоже присутствует при:
mp_autoteambalance "0"
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
  • Автор ресурса
  • #9
У тебя везде хранятся индексы команд, игрока и выборов. Так не проще по этим номерам и выводить нужную строку, а не хранить глобально в нескольких количествах одну и ту же информацию?
Сделай доброе дело, захардкорь пользователям оптимизацию, а я поучусь :acute:
Не в коем случае не стеб, мне с гуру спорить нет смысла, в дураках останусь. :buba:

Баланс только в ручном режиме? Или автобаланс тоже присутствует при:
mp_autoteambalance "0"
Баланс не зависит от каких то кваров, сделает команды идентичными, если это возможно.
 

pentaxist

Участник
Сообщения
495
Реакции
91
@Lisoh, я немного другое имел ввиду)) сделает ли Ваш плагин автобаланс сам, без участия админа, если в одной команде будет 3 игрока а в другой 5.
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
  • Автор ресурса
  • #11
@Lisoh, я немного другое имел ввиду)) сделает ли Ваш плагин автобаланс сам, без участия админа, если в одной команде будет 3 игрока а в другой 5.
Special Team Balancer

Опять наверное не понял, ну да ладно... Если вы спрашиваете так...
Если я установлю ваш плагин - он будет делать автобаланс автоматически? - Нет, не будет, пока сам администратор не сделает этого.
 
Последнее редактирование модератором:

pentaxist

Участник
Сообщения
495
Реакции
91
Special Team Balancer

Опять наверное не понял, ну да ладно... Если вы спрашиваете так...
Если я установлю ваш плагин - он будет делать автобаланс автоматически? - Нет, не будет, пока сам администратор не сделает этого.
Понял, стоит на сервере указанный плагин и swapteam, думал может Ваш плагин заменит их. Спасибо за ответ.
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
  • Автор ресурса
  • #14
Не играл, точнее не создавал там свои сервера... Скидывайте лог ошибок, попробую поправить.
 

LeXon

Участник
Сообщения
317
Реакции
29
@Lisoh, чуток позже, я ещё не ставил, нет возможности. Может кто другой потестит раньше
--- Добавлено позже ---
@Lisoh, всё работает на css, хотелось бы изменений:
В спекторы на позиции 3. а не 1.
Раскрасить все сообщения {blue}
 
Последнее редактирование:

The Space

Участник
Сообщения
147
Реакции
27
Не хочешь добавить еще функцию для рандомного перемешивания команд?)
 

dmc116

Участник
Сообщения
245
Реакции
13
На какой флаг этот плагин привязан? И как изменить его?
 

Azenot

Токсичный жировик
Сообщения
331
Реакции
365
На какой флаг этот плагин привязан? И как изменить его?
C-подобный:
        g_hAdminMenu.AddItem("ChangeTeamPlayerItem", hAdminMenuChangeTeam, hCategory, "ChangeTeamPlayer", ADMFLAG_KICK);
        g_hAdminMenu.AddItem("ChangeTeamPlayerAllItem", hAdminMenuChangeTeamAll, hCategory, "ChangeTeamPlayerAll", ADMFLAG_KICK);
        g_hAdminMenu.AddItem("AutoBalanceItem", hAdminMenuAutoBalance, hCategory, "AutoBalance", ADMFLAG_KICK);
На данный момент привязан ADMFLAG_KICK, который равняется флагу "c". Можешь изменить по примеру ниже:
#define ADMFLAG_RESERVATION (1<<0) /**< Convenience macro for Admin_Reservation as a FlagBit */
#define ADMFLAG_GENERIC (1<<1) /**< Convenience macro for Admin_Generic as a FlagBit */
#define ADMFLAG_KICK (1<<2) /**< Convenience macro for Admin_Kick as a FlagBit */
#define ADMFLAG_BAN (1<<3) /**< Convenience macro for Admin_Ban as a FlagBit */
#define ADMFLAG_UNBAN (1<<4) /**< Convenience macro for Admin_Unban as a FlagBit */
#define ADMFLAG_SLAY (1<<5) /**< Convenience macro for Admin_Slay as a FlagBit */
#define ADMFLAG_CHANGEMAP (1<<6) /**< Convenience macro for Admin_Changemap as a FlagBit */
#define ADMFLAG_CONVARS (1<<7) /**< Convenience macro for Admin_Convars as a FlagBit */
#define ADMFLAG_CONFIG (1<<8) /**< Convenience macro for Admin_Config as a FlagBit */
#define ADMFLAG_CHAT (1<<9) /**< Convenience macro for Admin_Chat as a FlagBit */
#define ADMFLAG_VOTE (1<<10) /**< Convenience macro for Admin_Vote as a FlagBit */
#define ADMFLAG_PASSWORD (1<<11) /**< Convenience macro for Admin_Password as a FlagBit */
#define ADMFLAG_RCON (1<<12) /**< Convenience macro for Admin_RCON as a FlagBit */
#define ADMFLAG_CHEATS (1<<13) /**< Convenience macro for Admin_Cheats as a FlagBit */
#define ADMFLAG_ROOT (1<<14) /**< Convenience macro for Admin_Root as a FlagBit */
#define ADMFLAG_CUSTOM1 (1<<15) /**< Convenience macro for Admin_Custom1 as a FlagBit */
#define ADMFLAG_CUSTOM2 (1<<16) /**< Convenience macro for Admin_Custom2 as a FlagBit */
#define ADMFLAG_CUSTOM3 (1<<17) /**< Convenience macro for Admin_Custom3 as a FlagBit */
#define ADMFLAG_CUSTOM4 (1<<18) /**< Convenience macro for Admin_Custom4 as a FlagBit */
#define ADMFLAG_CUSTOM5 (1<<19) /**< Convenience macro for Admin_Custom5 as a FlagBit */
#define ADMFLAG_CUSTOM6 (1<<20) /**< Convenience macro for Admin_Custom6 as a FlagBit */
 

dmc116

Участник
Сообщения
245
Реакции
13
C-подобный:
        g_hAdminMenu.AddItem("ChangeTeamPlayerItem", hAdminMenuChangeTeam, hCategory, "ChangeTeamPlayer", ADMFLAG_KICK);
        g_hAdminMenu.AddItem("ChangeTeamPlayerAllItem", hAdminMenuChangeTeamAll, hCategory, "ChangeTeamPlayerAll", ADMFLAG_KICK);
        g_hAdminMenu.AddItem("AutoBalanceItem", hAdminMenuAutoBalance, hCategory, "AutoBalance", ADMFLAG_KICK);
На данный момент привязан ADMFLAG_KICK, который равняется флагу "c". Можешь изменить по примеру ниже:
#define ADMFLAG_RESERVATION (1<<0) /**< Convenience macro for Admin_Reservation as a FlagBit */
#define ADMFLAG_GENERIC (1<<1) /**< Convenience macro for Admin_Generic as a FlagBit */
#define ADMFLAG_KICK (1<<2) /**< Convenience macro for Admin_Kick as a FlagBit */
#define ADMFLAG_BAN (1<<3) /**< Convenience macro for Admin_Ban as a FlagBit */
#define ADMFLAG_UNBAN (1<<4) /**< Convenience macro for Admin_Unban as a FlagBit */
#define ADMFLAG_SLAY (1<<5) /**< Convenience macro for Admin_Slay as a FlagBit */
#define ADMFLAG_CHANGEMAP (1<<6) /**< Convenience macro for Admin_Changemap as a FlagBit */
#define ADMFLAG_CONVARS (1<<7) /**< Convenience macro for Admin_Convars as a FlagBit */
#define ADMFLAG_CONFIG (1<<8) /**< Convenience macro for Admin_Config as a FlagBit */
#define ADMFLAG_CHAT (1<<9) /**< Convenience macro for Admin_Chat as a FlagBit */
#define ADMFLAG_VOTE (1<<10) /**< Convenience macro for Admin_Vote as a FlagBit */
#define ADMFLAG_PASSWORD (1<<11) /**< Convenience macro for Admin_Password as a FlagBit */
#define ADMFLAG_RCON (1<<12) /**< Convenience macro for Admin_RCON as a FlagBit */
#define ADMFLAG_CHEATS (1<<13) /**< Convenience macro for Admin_Cheats as a FlagBit */
#define ADMFLAG_ROOT (1<<14) /**< Convenience macro for Admin_Root as a FlagBit */
#define ADMFLAG_CUSTOM1 (1<<15) /**< Convenience macro for Admin_Custom1 as a FlagBit */
#define ADMFLAG_CUSTOM2 (1<<16) /**< Convenience macro for Admin_Custom2 as a FlagBit */
#define ADMFLAG_CUSTOM3 (1<<17) /**< Convenience macro for Admin_Custom3 as a FlagBit */
#define ADMFLAG_CUSTOM4 (1<<18) /**< Convenience macro for Admin_Custom4 as a FlagBit */
#define ADMFLAG_CUSTOM5 (1<<19) /**< Convenience macro for Admin_Custom5 as a FlagBit */
#define ADMFLAG_CUSTOM6 (1<<20) /**< Convenience macro for Admin_Custom6 as a FlagBit */
То есть ток по группе могу вписать?
 

Azenot

Токсичный жировик
Сообщения
331
Реакции
365
То есть ток по группе могу вписать?
Не по группе, а по уровню доступа. У тебя в папке /sourcemod/configs/ лежит файлик admin_levels.cfg. Вот в нем и прописаны все дефолтные настройки уровня доступа. Если ты хочешь, чтобы доступ к этим командам был только у главного админа сервера, то поставь ADMFLAG_ROOT.
 
Сверху Снизу