Плагин для исправления смены карты.

avanger.usa

Участник
Сообщения
113
Реакции
30
Сервер работает с WorkShop . В adminnmenu_maplist карты прописаны без префиксов воркшопа, чтобы красиво отображалось в меню. Так вот в этом есть некий баг , некоторые карты не правильно меняются , то есть выбираешь awp_lego а ставится awp_india. Смогут ли знатоки написать вроде как просто плагин? Как-нибудь отлавливать что админ нажал в меню и менять карту на правильную. Можно к плагину сделать не большой конфиг , с примерным содержимым:

"Maps"
{
"awp_lego" "workshop/xxxxxxxxxxx/awp_lego"
}

Что скажете?
 

Someone

Участник
Сообщения
1,933
Реакции
1,653
Сервер работает с WorkShop . В adminnmenu_maplist карты прописаны без префиксов воркшопа, чтобы красиво отображалось в меню. Так вот в этом есть некий баг , некоторые карты не правильно меняются , то есть выбираешь awp_lego а ставится awp_india. Смогут ли знатоки написать вроде как просто плагин? Как-нибудь отлавливать что админ нажал в меню и менять карту на правильную. Можно к плагину сделать не большой конфиг , с примерным содержимым:

"Maps"
{
"awp_lego" "workshop/xxxxxxxxxxx/awp_lego"
}

Что скажете?
Если я тебя правильно понял и ID у картв всегда длиной в 10 цифр, то:


Открываешь scripting/basecommands/map.sp.
Находишь в конце:
PHP:
for (int i = 0; i < map_count; i++)
    {
        GetArrayString(g_map_array, i, map_name, sizeof(map_name));
        menu.AddItem(map_name, map_name);
Заменяешь на:
PHP:
for (int i = 0; i < map_count; i++)

    {

        GetArrayString(g_map_array, i, map_name, sizeof(map_name));
        menu.AddItem(map_name, strcmp(map_name, "workshop/") == 0 ? map_name[21]:map_name[0]);

    }
Компилируешь basecommands.sp.

В конфиге карты с workshop/id.. вписывай.
 

DarklSide

Участник
Сообщения
931
Реакции
468
PHP:
char map_name[64];
int map_count = GetArraySize(g_map_array);

for (int i = 0; i < map_count; i++)
{
    GetArrayString(g_map_array, i, map_name, sizeof(map_name));
    menu.AddItem(map_name, map_name);
}
->
PHP:
char map_name[64];
char clearMap_name[64];
int iFind = -1;
int map_count = GetArraySize(g_map_array);

for (int i = 0; i < map_count; i++)
{
    GetArrayString(g_map_array, i, map_name, sizeof(map_name));
    if ((iFind = FindCharInString(map_name, '/', true)) != -1)
    {
        strcopy(clearMap_name, sizeof(clearMap_name), map_name[iFind + 1]);
        menu.AddItem(map_name, clearMap_name);
    }
    else
    {
        menu.AddItem(map_name, map_name);
    }
}

Либо использовать GetMapDisplayName().

В конфигах писать полный путь:
workshop/123456789/de_dust2
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,924
  • Команда форума
  • #4
@Someone, не всегда.
@DarklSide, я автору уже предложил свою реализацию в ЛС в Дискорде (он меня сам там пнул).
 
P

Poseidon959

Я делал так:
Если нет совпадений в конечных названиях bsp файлов,к примеру "269062388/mapname.bsp", "87316342/mapname.bsp", то прописывал НАЗВАНИЕ + .bsp:
awp_india.bsp
awp_lego_2.bsp
и т.д.
 
Сверху Снизу