[CS: Source] mpbhops_unload

orel_s_binoklem

Участник
Сообщения
48
Реакции
9
Описание: Заметил на своём сервере, что после смены карты, с бенихопа на обычный mg, сервер падал. И зделал плагин который при смене карты меняет значение переменной mpbhops_enable на "0", если следующая карта тоже бенихоп то надо перевести переменную в "1", это можно зделать с помощью плагина mapconfigs.

mpbhops_unload_end_map.smx кинуть в cstrike\addons\sourcemod\plugins
mpbhops_unload_end_map.sp кинуть в cstrike\addons\sourcemod\scripting

Посмотреть вложение mpbhops_unload_end_map.smx
Посмотреть вложение mpbhops_unload_end_map.sp
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
orel_s_binoklem, у вас там карты как начинаются для банихопа (префикс)?
Так попробуй и не надо будет переводить в cfg квар в 1:
PHP:
public OnConfigsExecuted()
{
	decl String:m[6];
	if (GetCurrentMap(m, 6)) ServerCommand("sm_cvar mpbhops_enable %i", strcmp(m, "bhop_") ? 0:1);
}

public OnMapEnd() ServerCommand("sm_cvar mpbhops_enable 0");
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
AlmazON
PHP:
// лишнее, видимо
public OnMapEnd() ServerCommand("sm_cvar mpbhops_enable 0");
и почему бы OnMapStrat не использовать?
 

R1KO

fuck society
Сообщения
9,460
Реакции
7,799
  • Команда форума
  • #4
AlmazON,
PHP:
decl String:m[6];
    if (GetCurrentMap(m, 6)) ServerCommand("sm_cvar mpbhops_enable %i", strcmp(m, "bhop_") ? 0:1);
Точно уверен что получит сколько влезет, а остальное проигнорит??
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
// лишнее, видимо
Не лишнее, ему же надо изменить переменную до новой карты, иначе сервер падает.
OnMapStart - переменная может быть изменена server.cfg, а
уже проставит после снова 0 (на всякий случай) или же изменит на 1, если карта из группы банихопа.
получит сколько влезет, а остальное проигнорит??
Можешь проверить, вывести в чат или в консоль. Получишь обрывок в 5 символов, что нам и необходимо. Достаточно прямой сверки.
Насколько помню, я всегда так делал. И концы получал через strlen, минусовав к переменной, сколько надо символов для сравнения и после проверял strcmp, а не StrContains (когда много поисков по концу строки, то так оптимальнее).
 

R1KO

fuck society
Сообщения
9,460
Реакции
7,799
  • Команда форума
  • #6
AlmazON, есть такая штука как strncmp
и обращение через индексы. Так куда оптимальней.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
Так куда оптимальней
Для чего? Всё равно же надо получить конец через strlen, минусовав. То же самое, переменная нужна.
А если ты про пример с картой - глупо подготавливать и записывать всю строку (а вдруг там аж 1024 символов?!), когда можно сохранить и сравнить лишь то, с чем работаешь. НЕ оптимальнее, наоборот.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
корректно ли получается кусок имени карты
Проверяем:
PHP:
public OnConfigsExecuted()
{
    decl String:m[4];
    if (GetCurrentMap(m, 4)) PrintToServer("Prefix map de_? %s", strcmp(m, "de_") ? "NO":"YES");
}
Запускаем сервер и получаем:
0111678bb1aa.jpg
Меняем карту:
99ae8341b036.jpg
Весьма корректно.
 
  • Мне нравится
Реакции: R1KO

orel_s_binoklem

Участник
Сообщения
48
Реакции
9
А не проще просто выгружать плагин?

пробовал но он вообще перестает работать на всех картах.

Добавлено через 1 минуту
orel_s_binoklem, у вас там карты как начинаются для банихопа (префикс)?
Так попробуй и не надо будет переводить в cfg квар в 1:
PHP:
public OnConfigsExecuted()
{
    decl String:m[6];
    if (GetCurrentMap(m, 6)) ServerCommand("sm_cvar mpbhops_enable %i", strcmp(m, "bhop_") ? 0:1);
}

public OnMapEnd() ServerCommand("sm_cvar mpbhops_enable 0");

я плохо понимаю - я только начал изучать соурс павн.
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,756
я плохо понимаю
Вставь мой код в блокнот, подпиши такой файл с расширением .sp, скомпилируй и попробуй вообще без
надо перевести переменную в "1", это можно зделать с помощью плагина mapconfigs
 
Сверху Снизу