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

Anticamp 1.0.3

Нет прав для скачивания
Сообщения
56
Реакции
84
Drumanid добавил(а) новый ресурс:

Anticamp - Предупреждает и наказывает игрока за кемперство на сервере

Предупреждает и наказывает игрока за кемперство на сервере.

Демонстрация:

Полностью переписан код, убран ненужный функционал (как по мне), аналог плагина: https://forums.alliedmods.net/showthread.php?t=99960
Узнать больше об этом ресурсе...
 
Сообщения
2,751
Реакции
3,017
Помог
61 раз(а)
Drumanid, а, у вас нет разве готовых биндов на значения?! И приходится так из ситуации выходить..? Если да, то даёт ли это "оптимизацию"? Как если бы мы брали постоянно значение по хендлу.
Код:
public void CvarHookTimer(ConVar hCvar, const char[] sOldValue, const char[] sNewValue) { g_fCvarTimer = hCvar.FloatValue; }
public void CvarHookTime(ConVar hCvar, const char[] sOldValue, const char[] sNewValue) { g_iCvarTime = hCvar.IntValue; }
public void CvarHookDistance(ConVar hCvar, const char[] sOldValue, const char[] sNewValue) { g_fCvarDistance = hCvar.FloatValue; }
public void CvarHookSlap(ConVar hCvar, const char[] sOldValue, const char[] sNewValue) { g_iCvarSlap = hCvar.IntValue; }
public void CvarHookGap(ConVar hCvar, const char[] sOldValue, const char[] sNewValue) { g_iCvarGap = hCvar.IntValue; }
public void CvarHookWeapons(ConVar hCvar, const char[] sOldValue, const char[] sNewValue) { hCvar.GetString(g_sCvarWeapons, sizeof(g_sCvarWeapons)); }
public void CvarHookTeam(ConVar hCvar, const char[] sOldValue, const char[] sNewValue) { g_iCvarTeam = hCvar.IntValue; }
public void CvarHookPosHud(ConVar hCvar, const char[] sOldValue, const char[] sNewValue) { ConvertPosxy(hCvar); }
public void CvarHookRings(ConVar hCvar, const char[] sOldValue, const char[] sNewValue) { g_bCvarRings = hCvar.BoolValue; }
public void CvarHookWarningCount(ConVar hCvar, const char[] sOldValue, const char[] sNewValue) { g_iCvarWarningCount = hCvar.IntValue; }

Допустим, в AmxModX присутствуют нативы для закрепления CVar'a за переменной (bind_pcvar_*)
 
Сообщения
207
Реакции
420
Помог
10 раз(а)
wopox1337, нет у нас такого, да. Выкручиваемся как можем. Бывает даже такое:
C++:
public void OnCvarChanged(ConVar hCvar, const char[] sOldValue, const char[] sNewValue) {
  if (hCvar == g_hEnabled)
    g_bEnabled = g_hEnabled.BoolValue;
  else if (hCvar) == g_hTimer)
    g_fTimer = g_hTimer.FloatValue;
  // ... и так далее
}
Идея с биндом, кстати, интересная. Можно попробовать набросать прототип расширения, который добавит подобное в SM.
 
Сообщения
56
Реакции
84
wopox1337, Не совсем понимаю формулировку вопроса, но попытаюсь дать 'обширно' ответ.

AddChangeHook - необходим для того чтобы можно было отследить изменение значения 'квара'.
Если вопрос заключается почему я не регистрирую глобальные ConVars и не получаю значения из них, а собственно зачем?
Если я могу сразу его записать в нужный тип переменной... И вроде как меньше памяти занимаем.

Я давно об этом читал, если вспомню где именно скину ссылку, если конечно же я правильно тебя понимаю...

Код:
ConVar g_hCvar;

public void OnPluginStart()
{
    RegConsoleCmd("sm_test", TestCmd);
    g_hCvar = CreateConVar("test_bool", "1", "Описание");
}
/*    g_hCvar.AddChangeHook(CvarHookTest);
}

public void CvarHookTest(ConVar hCvar, const char[] sOldValue, const char[] sNewValue)
{
    if(StringToInt(sNewValue) > 1) hCvar.SetBool(view_as<bool>(StringToInt(sOldValue)));
}*/

public Action TestCmd(int iClient, int iArgs)
{
    if(iClient > 0 && iArgs < 1) PrintToChat(iClient, "g_hCvar: %i", g_hCvar.BoolValue);
    return Plugin_Handled;
}
Код:
bool g_bCvar;

public void OnPluginStart()
{
    RegConsoleCmd("sm_test", TestCmd);

    g_hCvar = CreateConVar("test_bool", "1", "Описание");
    g_hCvar.AddChangeHook(CvarHookTest); g_bCvar = hCvar.BoolValue;
}

public void CvarHookTest(ConVar hCvar, const char[] sOldValue, const char[] sNewValue)
{
    g_bCvar = hCvar.BoolValue;
}

public Action TestCmd(int iClient, int iArgs)
{
    if(iClient > 0 && iArgs < 1) PrintToChat(iClient, "g_hCvar: %i", g_bCvar);
    return Plugin_Handled;
}
С такими вопросами если хочешь вникнуть, обращайся к CrazyHackGUT, у него больше опыта чем у меня.
 
Последнее редактирование:
Сообщения
5
Реакции
1
Возможно ли подружить с Insurgency ? Попробовал OTHER, не работает.
 
Сообщения
5
Реакции
1
Drumanid, Ошибки в логах отсутствуют. Кемпера в Insurgency это извечная проблема и ни на одном сервере нет работающего плагина позволяющего хоть как то на это повлиять, было бы здорового это исправить, но от чего опираться если логи девственно чисты :)
 
Последнее редактирование:
Сообщения
56
Реакции
84
Drumanid, Ошибки в логах отсутствуют. Кемпера в Insurgency это извечная проблема и ни на одном сервере нет работающего плагина позволяющего хоть как то на это повлиять, было бы здорового это исправить, но от чего опираться если логи девственно чисты :)
Финита ля комедия
 
Сообщения
5
Реакции
1
Drumanid, Чисто теоретически с чем это может быть связанно ? Методом тестирования я заметил что текст в Insurgency можно выводить само собой в чат, а также Hint и Center, а вот в Hud нельзя, может ли это повлиять на работоспособность плагина ?
 
Последнее редактирование:
Сообщения
56
Реакции
84
Drumanid, Чисто теоретически с чем это может быть связанно ? Методом тестирования я заметил что текст в Insurgency можно выводить само собой в чат, а также Hint и Center, а вот в Hud нельзя, может ли это повлиять на работоспособность плагина ?
В этой игре нет тех возможностей что есть в играх CS.

Я не совсем понимаю фразу 'не работает плагин' - нет никакой конкретики.
Не работает конкретно плагин, или же какие то функции? Назовем это так.

При вводе команды sm plugins list в консоль отображается ли мой плагин как активный?
Было бы замечательно если бы вы дали мне доступ к ftp(серверу) и я уже сам посмотрел что да и как.

Если проблема в худе, то попробуй скомпилировать и установить этот вариант:
 

Вложения

Сообщения
5
Реакции
1
Drumanid, Изначально плагин выводил ошибку из-за:
Код:
HookEvent("bomb_planted", OtherEvents);
по скольку такого эвента в Insurgency не существует я убрал эту строчку, также в игре отсутствуют эвенты:
Код:
HookEvent("player_activate", PlayerActivate);
HookEvent("round_freeze_end", OtherEvents);
HookEvent("round_end", OtherEvents);
их я заменил на эвенты из Insurgency. Плагин стал отображаться как активный, потом я вспомнил что в игре невозможно вывести текст в Hud, и ещё заметил что команда sm_slap по просту не работает в этой игре, даже при наличии плагина FunCommands, а вот sm_burn работает, может ли это тоже повлиять на работоспособность плагина, ведь в плагине используется CvarSlap.
 
Сообщения
56
Реакции
84
Плагин стал отображаться как активный, потом я вспомнил что в игре невозможно вывести текст в Hud, и ещё заметил что команда sm_slap по просту не работает в этой игре, даже при наличии плагина FunCommands, а вот sm_burn работает, может ли это тоже повлиять на работоспособность плагина, ведь в плагине используется CvarSlap.
Вот за что отвечает квар: (Сама функция пинка закомментирована, она не используется в плагине)

Код:
if(g_iCvarSlap != -1)
{
    //SlapPlayer(i, g_iCvarSlap, true);
    if((iHealth = GetEntProp(i, Prop_Data, "m_iHealth") - g_iCvarSlap) > 0)
    {
        SetEntProp(i, Prop_Data, "m_iHealth", iHealth);
        ClientCommand(i, "play %s", Slapsound);
    }
    else
    {
        ForcePlayerSuicide(i);
        PrintToChat(i, "%t", "Kill message");
    }
}
Данный код отнимает хп у игрока или же во все убивает, если у игрока значение хп меньше значения урона.
 
Сообщения
5
Реакции
1
Интересно что этот плагин работает корректно, правда в функционале отсутствует какое либо наказание.
 
Сообщения
3
Реакции
2
Имеется такая проблема: сразу же дамажит игроков на следующий раунд, если он был убит (не только через консоль) когда АntiCamp наносил урон или же во время показа предупреждения, при этом в след раунде 5 раз игнорирует "Промежуток времени в секундах между уведомлениями" - anticamp_gap "3" и наносит урон
Есть шанс, что если игрок был убит между уведомлениями, то потом урон не будет наноситься
Все вышеописанное есть в видео
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу