• Добро пожаловать Гость. Чтобы Вы могли воспользоваться системой заявок, на аренду сервера, на бан игроков, на разбан, Вы должны зарегистрироваться. Пройти регистрацию Форма для связи Обратная связь

Рандомная смена оружия в режиме gun master в battlefield 3 и battlefield 4

KADDAFI_MUAMMAR

Полковник
Арендатор
28 Дек 2016
1.134
18
1.089
Russia primorskiy kray
clan-fear.ru
ВКонтакте
[ВК]
#1
Всем привет, есть ли возможность настроить автоматическое переключение наборов оружия на Ган мастере в 3 батле? Сервер создан чисто под мастера оружия. С уважением.
 

Timm

XLGAMES.RU
5 Сен 2014
16.709
1.895
2.649
Battlelog
[BL]
ВКонтакте
[ВК]
Facebook
[FB]
#2
Попробуйте следующий скрипт для плагина InsaneLimits

Создайте новый лимит:
1) evaulation - OnRoundOver
2) first_check - Code
и вставьте этот скрипт.

Для Battlefield 4 точно работает.
PS. Для Battlefield 3 не проверял, но лимит скомпилировался.


Код:
// BF3 Рандомизатор пресетов в режиме Мастер оружия - Limit 1 из 1
// v1.0 - OnRoundOver - first_check
//

Thread gmrnd = new Thread(
    new ThreadStart(
        delegate
        {
            try
            {
                // ПОЛЬЗОВАТЕЛЬСКИЕ НАСТРОЙКИ
                // true - включить false - выключить
                int iDelay = 0;
                int lastPreset = 0;
                bool ensureNight = true;
                bool allowStandard = true;
                bool allowStandardRevers = true;
                bool allowFlash = true;
                bool allowMachineGuns = true;
                bool allowPistol = true;
               bool allowSnipers = true;
                bool allowUSA = true;
                bool allowRussian = true;
                bool allowEurope = true;
                bool showChat = true;
                bool showYell = true;
                bool showProcon = true;
                //
                // END OF USER SETTINGS
                if (iDelay > 0)
                {
                    Thread.Sleep(iDelay * 1000);
                }
                if (server.NextGamemode == "GunMaster0" || server.NextGamemode == "GunMaster1")
                {
                    bool bGetting = true;
                    int nextPreset = 0;
                    int maxPreset = 6;
                    Random rnd = new Random();
                    String lastKey = "_LASTGM_";
                    String[] presets = { "Standard",
                                         "StandardRevers",
                                         "Flash",
                                         "MachineGuns",
                                         "Pistol",
                                         "Snipers",
                                         "USA",
                                         "Russian",
                                         "Europe" };
                    String msg = "Следующая предустановка оружия будет: ";
                    if (server.Data.issetInt(lastKey)) lastPreset = server.Data.getInt(lastKey);
                    nextPreset = rnd.Next(maxPreset);
                    if (ensureNight && server.NextMapFileName == "XP5_Night_01")
                    {
                        nextPreset = 5;
                    }
                    else
                    {
                        while (bGetting)
                        {
                            nextPreset = rnd.Next(maxPreset);
                            if (!allowStandard && nextPreset == 0) nextPreset = lastPreset;
                            if (!allowStandardRevers && nextPreset == 1) nextPreset = lastPreset;
                            if (!allowFlash && nextPreset == 2) nextPreset = lastPreset;
                            if (!allowMachineGuns && nextPreset == 3) nextPreset = lastPreset;
                            if (!allowPistol && nextPreset == 4) nextPreset = lastPreset;
                            if (!allowSnipers && nextPreset == 5) nextPreset = lastPreset;
                            if (!allowUSA && nextPreset == 6) nextPreset = lastPreset;
                            if (!allowRussian && nextPreset == 7) nextPreset = lastPreset;
                            if (!allowEurope && nextPreset == 8) nextPreset = lastPreset;
                            if (nextPreset != lastPreset) bGetting = false;
                        }
                    }
                    plugin.ServerCommand("vars.gunMasterWeaponsPreset", nextPreset.ToString());
                    if (showChat) plugin.SendGlobalMessage(msg + presets[nextPreset]);
                    if (showYell) plugin.SendGlobalYell("\n" + msg + presets[nextPreset], 8);
                    if (showProcon) plugin.PRoConChat(msg + "^b^1" + presets[nextPreset] + "^0^n.");
                    server.Data.setInt(lastKey, nextPreset);
                }
            }
            catch (Exception e)
            {
                plugin.ConsoleException(e.ToString());
            }
        }
    )
);

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

return false;
// BF3 Gunmaster weapon preset randomizator - Limit 1 of 1
// v1.0 - OnRoundOver - first_check
//

Thread gmrnd = new Thread(
new ThreadStart(
delegate
{
try
{
// USER SETTINGS
// true - on false - off
int iDelay = 0;
int lastPreset = 0;
bool ensureNight = true;
bool allowStandard = true;
bool allowStandardRevers = true;
bool allowFlash = true;
bool allowMachineGuns = true;
bool allowPistol = true;
bool allowSnipers = true;
bool allowUSA = true;
bool allowRussian = true;
bool allowEurope = true;
bool showChat = true;
bool showYell = true;
bool showProcon = true;
//
// END OF USER SETTINGS
if (iDelay > 0)
{
Thread.Sleep(iDelay * 1000);
}
if (server.NextGamemode == "GunMaster0" || server.NextGamemode == "GunMaster1")
{
bool bGetting = true;
int nextPreset = 0;
int maxPreset = 6;
Random rnd = new Random();
String lastKey = "_LASTGM_";
String[] presets = { "Standard",
"StandardRevers",
"Flash",
"MachineGuns",
"Pistol",
"Snipers",
"USA",
"Russian",
"Europe" };
String msg = "Next Gunmaster weapon preset will be: ";
if (server.Data.issetInt(lastKey)) lastPreset = server.Data.getInt(lastKey);
nextPreset = rnd.Next(maxPreset);
if (ensureNight && server.NextMapFileName == "XP5_Night_01")
{
nextPreset = 5;
}
else
{
while (bGetting)
{
nextPreset = rnd.Next(maxPreset);
if (!allowStandard && nextPreset == 0) nextPreset = lastPreset;
if (!allowStandardRevers && nextPreset == 1) nextPreset = lastPreset;
if (!allowFlash && nextPreset == 2) nextPreset = lastPreset;
if (!allowMachineGuns && nextPreset == 3) nextPreset = lastPreset;
if (!allowPistol && nextPreset == 4) nextPreset = lastPreset;
if (!allowSnipers && nextPreset == 5) nextPreset = lastPreset;
if (!allowUSA && nextPreset == 6) nextPreset = lastPreset;
if (!allowRussian && nextPreset == 7) nextPreset = lastPreset;
if (!allowEurope && nextPreset == 8) nextPreset = lastPreset;
if (nextPreset != lastPreset) bGetting = false;
}
}
plugin.ServerCommand("vars.gunMasterWeaponsPreset", nextPreset.ToString());
if (showChat) plugin.SendGlobalMessage(msg + presets[nextPreset]);
if (showYell) plugin.SendGlobalYell("\n" + msg + presets[nextPreset], 8);
if (showProcon) plugin.PRoConChat(msg + "^b^1" + presets[nextPreset] + "^0^n.");
server.Data.setInt(lastKey, nextPreset);
}
}
catch (Exception e)
{
plugin.ConsoleException(e.ToString());
}
}
)
);

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

return false;[/CODE]


Код:
// BF4 Gunmaster Random Presets - Limit 1 of 1
// v3.0 - OnRoundOver - first_check
//

Thread gmrnd = new Thread(
    new ThreadStart(
        delegate
        {
            try
            {
                // USER SETTINGS
                //
                int iDelay = 0;
                int lastPreset = 0;
                bool ensureNight = true;
                bool allowStandard = true;
                bool allowClassic = true;
                bool allowPistol = true;
                bool allowDLC = true;
                bool allowTroll = true;
                bool allowNight = true;
                bool showChat = true;
                bool showYell = true;
                bool showProcon = true;
                //
                // END OF USER SETTINGS
                if (iDelay > 0)
                {
                    Thread.Sleep(iDelay * 1000);
                }
                if (server.NextGamemode == "GunMaster0" || server.NextGamemode == "GunMaster1")
                {
                    bool bGetting = true;
                    int nextPreset = 0;
                    int maxPreset = 6;
                    Random rnd = new Random();
                    String lastKey = "_LASTGM_";
                    String[] presets = { "Standard",
                                         "Classic",
                                         "Pistol",
                                         "DLC",
                                         "Troll",
                                         "Night" };
                    String msg = "Next GunMaster preset will be: ";
                    if (server.Data.issetInt(lastKey)) lastPreset = server.Data.getInt(lastKey);
                    nextPreset = rnd.Next(maxPreset);
                    if (ensureNight && server.NextMapFileName == "XP5_Night_01")
                    {
                        nextPreset = 5;
                    }
                    else
                    {
                        while (bGetting)
                        {
                            nextPreset = rnd.Next(maxPreset);
                            if (!allowStandard && nextPreset == 0) nextPreset = lastPreset;
                            if (!allowClassic && nextPreset == 1) nextPreset = lastPreset;
                            if (!allowPistol && nextPreset == 2) nextPreset = lastPreset;
                            if (!allowDLC && nextPreset == 3) nextPreset = lastPreset;
                            if (!allowTroll && nextPreset == 4) nextPreset = lastPreset;
                            if (!allowNight && nextPreset == 5) nextPreset = lastPreset;
                            if (nextPreset != lastPreset) bGetting = false;
                        }
                    }
                    plugin.ServerCommand("vars.gunMasterWeaponsPreset", nextPreset.ToString());
                    if (showChat) plugin.SendGlobalMessage(msg + presets[nextPreset]);
                    if (showYell) plugin.SendGlobalYell("\n" + msg + presets[nextPreset], 8);
                    if (showProcon) plugin.PRoConChat(msg + "^b^1" + presets[nextPreset] + "^0^n.");
                    server.Data.setInt(lastKey, nextPreset);
                }
            }
            catch (Exception e)
            {
                plugin.ConsoleException(e.ToString());
            }
        }
    )
);

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

return false;


Данный скрипт будет менять рандомно набор оружия в режиме мастер оружия в конце раунда, перед началом следующего. Смена будет абсолютно рандомной, а не по порядку.
Если не хотите, чтобы в ротации рандома присутствовал тот или иной набор оружия, установите false вместо true перед названием.
 
Последнее редактирование:

KADDAFI_MUAMMAR

Полковник
Арендатор
28 Дек 2016
1.134
18
1.089
Russia primorskiy kray
clan-fear.ru
ВКонтакте
[ВК]
#3
для БФ 4 я так понял спойлер для обычной версии прокона, а с поддержкой UTF можно поклянчить,?
на UTF поставил, но к сожалению оружие не меняет
 

kill_26ru

Прапорщик
Арендатор
16 Июл 2018
138
10
229
32
РФ, Ставропольский край, г. Невинномысск
Battlelog
[BL]
ВКонтакте
[ВК]
#4
Добрый вечер. Подскажите пожалуйста, рандом работает только когда подряд идут карты мастер оружия? Просто на нашем сервере используется TDM, Domination и GunMaster, и всё делаю как здесь описано, но не работает рандом( Буду очень признателен за помощь.
 

Timm

XLGAMES.RU
5 Сен 2014
16.709
1.895
2.649
Battlelog
[BL]
ВКонтакте
[ВК]
Facebook
[FB]
#6
kill_26ru, все должно работать без проблем, это годами проверенный скрипт, проверьте правильность ввода
 

Timm

XLGAMES.RU
5 Сен 2014
16.709
1.895
2.649
Battlelog
[BL]
ВКонтакте
[ВК]
Facebook
[FB]
#9
kill_26ru, как будет время посмотрю, если не разберетесь или больше некому проверить, сейчас нет времени абсолютно
 

kill_26ru

Прапорщик
Арендатор
16 Июл 2018
138
10
229
32
РФ, Ставропольский край, г. Невинномысск
Battlelog
[BL]
ВКонтакте
[ВК]
#10
Если разберусь в чем дело, обязательно отпишусь и напишу причину, если нет то значит жду Вашей помощи) Спасибо большое.:)
 

kill_26ru

Прапорщик
Арендатор
16 Июл 2018
138
10
229
32
РФ, Ставропольский край, г. Невинномысск
Battlelog
[BL]
ВКонтакте
[ВК]
#11
Добрый день, так и не разобрался чтоб заработал рандом при наличии на сервере режимов TDM, DOM, GM. Прошу помощи(?
 

kill_26ru

Прапорщик
Арендатор
16 Июл 2018
138
10
229
32
РФ, Ставропольский край, г. Невинномысск
Battlelog
[BL]
ВКонтакте
[ВК]
#13
Есть мысль, что смена происходит только когда на сервере gm, но если в коде добавить другие режимы(стояшие на сервере) то смена будет происходить даже когда меняется режимы с tdm на dom или с dom на gm, и не важно что вкл не режим gm, но сменa оружия будет работать. Нужно чтоб смена оружия происходила всегда.(мысль) Но не знаю как реализовать этот момент в коде(
 

kill_26ru

Прапорщик
Арендатор
16 Июл 2018
138
10
229
32
РФ, Ставропольский край, г. Невинномысск
Battlelog
[BL]
ВКонтакте
[ВК]
#15
Пробовал только гм один хрен не работает
Ставил карты только gm и перезагружал севак и прокон, всё прекрасно работает. Здесь на бф4 код для с поддержкой UTF-8! Что б заработала без, просто убери пробелы(пример в коде бф3 указан) помотришь на два примера и поймешь о чем я говорю)
 

Timm

XLGAMES.RU
5 Сен 2014
16.709
1.895
2.649
Battlelog
[BL]
ВКонтакте
[ВК]
Facebook
[FB]
#16
kill_26ru, а как вы проверяете что он не работает?
у вас в Startup.txt что стоит?
должно быть так
Код:
vars.gunMasterWeaponsPreset 0
если например в конце другая цифра, Вы эту цифру должны указать и в скрипте в строке
Код:
int lastPreset = 0;

Этот метод переключает предустановку оружия только в том случае, если предыдущий раунд завершился, то есть произошел конец раунда, а Вы не взяли и просто пощелкали карты через прокон.
 

Timm

XLGAMES.RU
5 Сен 2014
16.709
1.895
2.649
Battlelog
[BL]
ВКонтакте
[ВК]
Facebook
[FB]
#17
Я проверил на сервере, в который добавил несколько режимов, и все прекрасно сработало.

Вы должны понимать работу скрипта, он срабатывает во время того, когда раунд завершился "Вы услышали песню победы или проигрыша и на экране показывает результат матча" это обязательно. Только в этом время устанавливается рандомная смена оружия для режима мастер оружия, и только в том случае, если следующий режим "Мастер оружия". Если Вы возьмете и измените карту в ручную, это работать не будет.
ПОВТОРЮСЬ, скрипт срабатывает если
1) следующей картой установлен режим мастер оружия
2) по завершению раунда, а не просто по переключению

От слова OnRoundOver - когда раунд завершился
 

kill_26ru

Прапорщик
Арендатор
16 Июл 2018
138
10
229
32
РФ, Ставропольский край, г. Невинномысск
Battlelog
[BL]
ВКонтакте
[ВК]
#18
Изначально в стартапе был прописано "0" и прописанно в плагине по умолчанию "0", спросив народ, ответили что не меняется режим( Я понял что смена происходит по окончанию игрового процесса) проверю еще раз) спасибо)
 

Timm

XLGAMES.RU
5 Сен 2014
16.709
1.895
2.649
Battlelog
[BL]
ВКонтакте
[ВК]
Facebook
[FB]
#19
ну в названии написано "Рандомная", она не исключает что выпадет текущая предустановка.

Проверил все работает, как и говорил выше, ни каких проблем нет, если что то не работает, то значит что то делаете не так. Я просто взял, скопировал скрипт, включил схватку команд, так как вы говорите, что у вас после неё не работает, установил мастер оружия следующей картой, завершил раунд, и в следующем раунде мастера оружия предустановка изменилась.
 

kill_26ru

Прапорщик
Арендатор
16 Июл 2018
138
10
229
32
РФ, Ставропольский край, г. Невинномысск
Battlelog
[BL]
ВКонтакте
[ВК]
#20
Добрый день. Тимур, так и не меняется рандом в мастере оружия(( всё делал как ты писал. Можешь проверить сам у меня проконе, уже вообще не понимаю почему.. буду очень признателен