Смена фракций (ru us cn) на каждой карте battlefield 4

mr_Grey

CRABSERVER
Customer
9 Дек 2017
260
0
Есть важный вопрос. Как выбирать разные расы (сша, россия, китай) на разных картах в маплисте используя прокон? В проконе есть такая настройка, но она на все карты
 

Slawter

Support team
5 Сен 2014
22.011
855
Для этого используйте плагин Ultimate Map Manager, создав список карт, и включив опцию
1) Allow Map-specific game presets -> Yes
2) Send Preset Command after Every round -> Yes
Спуститесь ниже и во вкладке Presets добавьте Custome Presets и дайте имя
Дополнительных пресетов нужно создать столько, сколько смен фракций Вы хотите
Вписать в них переменные:
Код:
vars.teamFactionOverride 1 1
vars.teamFactionOverride 2 2

где:
0 = США
1 = РФ
2 = Китай

если на какой то карте установлено по 2 раунда, то
vars.teamFactionOverride 1 1
vars.teamFactionOverride 2 2
vars.teamFactionOverride 3 0
vars.teamFactionOverride 4 2
Затем каждой карте установить созданный пресет настроек


Так же можно использовать плагин AdkAts (требуется запущенный плагин ProCon Chat, Guid Stats Logger, для которого требуется mySQL база данных)
но в этом плагине нельзя выставить смену фракций под каждую карту, а рандомно или в таком порядке как показано на скриншоте ниже
Adkats.png
 

mr_Grey

CRABSERVER
Customer
9 Дек 2017
260
0
для которого не нужны базы данных, вы же знаете какой нам лучше подойдет
 

mr_Grey

CRABSERVER
Customer
9 Дек 2017
260
0
ок, спасибо. раньше не видел этого плагина. буду разбираться
 

mr_Grey

CRABSERVER
Customer
9 Дек 2017
260
0
Здравствуйте. Ultimate map manager не меняет расы при смене карт, хотя в пресете все выставлено верно.
Пример:
# RU-US Preset
vars.teamFactionOverride 1 0
vars.teamFactionOverride 2 1
по идее, данный пресет, будучи прикрепленным к карте из маплиста на 1 раунд, должен менять фракции на US (0) против RU (1). Однако этого не происходит, расы остаются такими, какие они заданы в проконе изначально без плагина. Сам плагин в дебаге ошибок не выдает, в консоли вроде бы тоже эти команды проходят и пишутся, но настройка рас не меняется. В чем может быть дело?
 

woups

Администратор
17 Ноя 2014
233
7
Москва
Если плагин не выдает ошибок и в консоль команды проходят, то в принципе всё должно работать если эта команда разрешена в конце раунда, так как плагин шлёт команды именно в конце раунда.
 

mr_Grey

CRABSERVER
Customer
9 Дек 2017
260
0
Как видите по консоли плагина, пресет исправно меняется на прикрепленный к карте, однако смены рас не происходит.
 

woups

Администратор
17 Ноя 2014
233
7
Москва
Попробуйте добавить в те же пресеты ещё какую нибудь команду, например на смену тикетов. Просто чтобы удостовериться, что плагин посылает команды.
Допустим у Вас 2000 тикетов, сделайте в одном пресете 1000, а в другом 3000 и тд.
 

mr_Grey

CRABSERVER
Customer
9 Дек 2017
260
0
Переменная vars.gameModeCounter работает на плагине без нареканий и меняет кол-во тикетов корректно для каждой заданной карты (я ставил маплист из 2-х карт, на одной 3200 на другой 2000 тикетов). Однако смена рас не происходит. Исходя из этого предполагаю, что плагин команду на смену посылает, но что-то мешает ее выполнению. Как видите, плагинов у нас на сервере совсем немного и других меняющих серверные настройки нет. Что может мешать?
 

woups

Администратор
17 Ноя 2014
233
7
Москва
Я не знаю в чём может быть причина. Могу предположить, что плагин посылает команду поздно, а нужно посылать OnRoundOver когда раунд только закончился. Видимо он посылает прямо перед началом раунда.
 

Spartan-117th

Добрый админ
12 Фев 2017
1.139
56
30
Сделайте пожалуйста скриншот прокона на вкладке "Список карт" во вкладке "Списки" и напишите, на каких картах какие фракции вы хотите видеть.
Screenshot
 

mr_Grey

CRABSERVER
Customer
9 Дек 2017
260
0
примерно так
1 голмуд US-CN
2 голмуд US-RU
2 голмуд US-US

3200тикетов

 

Spartan-117th

Добрый админ
12 Фев 2017
1.139
56
30
Сделаю вам лимит на Insane Limits. С учетом загруженности и предстоящих праздников, возможно, до конца недели.
 

mr_Grey

CRABSERVER
Customer
9 Дек 2017
260
0
после подключения Insane Limits, мы потом сможем все менять? если нет то под вопросом
 

Spartan-117th

Добрый админ
12 Фев 2017
1.139
56
30
Ну если хоть немного голова работает, то сможете =)
 

Spartan-117th

Добрый админ
12 Фев 2017
1.139
56
30
И так, файл со скриптом во вложении.

Создаете новый лимит в Insane Limits, выполнение ставите либо на RoundOver либо на RoundStart. Из опций выбираете Code и вставляете туда текст из файла.

Код:
Thread gmrnd = new Thread(
    new ThreadStart(
        delegate
        {   
            
    int iDelay = 0;
    if (iDelay > 0)
                {
                    Thread.Sleep(iDelay * 1000);
                }                                     

        int nextMapIndex = server.NextMapIndex;
        
        switch (nextMapIndex)
        {
                    case 0:
            {
                plugin.ServerCommand("vars.teamFactionOverride", "1", "0");
                plugin.ServerCommand("vars.teamFactionOverride", "2", "2");
                break;
            }
            case 1:
            {
                plugin.ServerCommand("vars.teamFactionOverride", "1", "0");
                plugin.ServerCommand("vars.teamFactionOverride", "2", "1");
                break;
            }
            case 2:
            {
                plugin.ServerCommand("vars.teamFactionOverride", "1", "0");
                plugin.ServerCommand("vars.teamFactionOverride", "2", "0");
                break;
            }
        } 
        }
    )
);

gmrnd.Name = "FactionChanger";
gmrnd.Start();

return false;
Поясню работу.
С помощью параметра int iDelay = 0 вы можете установить время задержки срабатывания скрипта в секундах. Например, вы хотите, чтобы скрипт сработал через 10 секунд после начала раунда, тогда ставите int iDelay = 10;
Каждый "case" обозначает порядковый номер карты в списке карт, начиная с нуля (0, 1, 2 и т. д.). Если вы хотите добавить еще одну карту к имеющимся у вас трем, то нужно вставить кусок кода аналогичный следующему:
case 3:
{
plugin.ServerCommand("vars.teamFactionOverride", "1", "0");
plugin.ServerCommand("vars.teamFactionOverride", "2", "0");
break;
}
Что касается команд установки фракций. Предположим, вы хотите сделать US-RU. Тогда между фигурными скобками вставляете следующие строки:
plugin.ServerCommand("vars.teamFactionOverride", "1", "0");
plugin.ServerCommand("vars.teamFactionOverride", "2", "1");
 

Вложения

  • Like
Реакции: mr_Grey