Плагин который не позволяет зайти на сервер с другими значениями рейта.

koboyahsilee

Участник
Сообщения
8
Реакции
0
Операционная система
Другое
Здравствуйте, ищю плагин такой вот. Который держит игрока в спектах пока не поменяет свои рейты.
видел на одном сервере но не помню на каком. Искал тут но видимо плохо искал.
 
Решение
Здравствуйте, ищю плагин такой вот. Который держит игрока в спектах пока не поменяет свои рейты.
видел на одном сервере но не помню на каком. Искал тут но видимо плохо искал.

добавил еще проверку на значение fps_max (багают триггера бустов и не только).
вариант, который ты предложил - держит в спеках и не дает зайти.

C++:
#include <sdktools>
#include <cstrike>

bool bBlock[MAXPLAYERS+1] = {false, ...}
Handle hQueryCvarsTimer;

public void OnPluginStart() {
    AddCommandListener(Block, "");
}

public void OnMapStart() {
    hQueryCvarsTimer = CreateTimer(10.0, OnQueryTimer, _, TIMER_REPEAT);
}

public void OnMapEnd() {
    delete hQueryCvarsTimer;
}

public Action OnQueryTimer(Handle timer) {
    for(int i = 1; i <= MaxClients...

Sleep

Участник
Сообщения
394
Реакции
146
Здравствуйте, ищю плагин такой вот. Который держит игрока в спектах пока не поменяет свои рейты.
видел на одном сервере но не помню на каком. Искал тут но видимо плохо искал.
Можно же принудительно выставить всем рейты такие,какие вы хотите:

C-подобный:
sv_minrate "30000"
sv_maxrate "30000"
 

Madness aka null138

Участник
Сообщения
721
Реакции
784
Здравствуйте, ищю плагин такой вот. Который держит игрока в спектах пока не поменяет свои рейты.
видел на одном сервере но не помню на каком. Искал тут но видимо плохо искал.

добавил еще проверку на значение fps_max (багают триггера бустов и не только).
вариант, который ты предложил - держит в спеках и не дает зайти.

C++:
#include <sdktools>
#include <cstrike>

bool bBlock[MAXPLAYERS+1] = {false, ...}
Handle hQueryCvarsTimer;

public void OnPluginStart() {
    AddCommandListener(Block, "");
}

public void OnMapStart() {
    hQueryCvarsTimer = CreateTimer(10.0, OnQueryTimer, _, TIMER_REPEAT);
}

public void OnMapEnd() {
    delete hQueryCvarsTimer;
}

public Action OnQueryTimer(Handle timer) {
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && !IsFakeClient(i)) {
        QueryCvars(i);
    }
}

public void OnClientPutInServer(int client) {
    QueryCvars(client);
}

public Action Block(int client, const char[] command, int argc) {
    if(client > 0 && bBlock[client]) {
        return Plugin_Handled;
    }
    return Plugin_Continue;
}

public void CvarResults(QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvar, const char[] cvarvalue, any value) {
    if(result == ConVarQuery_Okay) {
        if(cvar[3] == 'i') {
            if(StringToFloat(cvarvalue) < 0.03) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
        else if(cvar[0] == 'f') {
            if(StringToFloat(cvarvalue) < 60.0) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
        else if(cvar[0] == 'r') {
            if(StringToInt(cvarvalue) < 25000) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
    }
}

void QueryCvars(int client) {
    QueryClientConVar(client, "cl_interp", CvarResults);
    QueryClientConVar(client, "fps_max", CvarResults);
    QueryClientConVar(client, "rate", CvarResults);
}

void BlockClient(int client, const char[] cvar, const char[] cvarvalue) {
    bBlock[client] = true;
    if(GetClientTeam(client) > 1) CS_SwitchTeam(client, 1);

    PrintToChat(client, "Значение команды \"%s\" должен быть выше или равна к \"%s\".", cvar, cvarvalue);
    PrintToChat(client, "Что-бы продолжить играть на сервере, поменяйте значение команд.");
}

void UnBlockClient(int client) {
    bBlock[client] = false;
}


а вот этот мой любимый. Просто издеваемся над такими, которые пытаются взять преимущество с минимальной интерполяцией (жесткий лаг мод для таких)

C++:
#include <sdktools>
#include <cstrike>

bool bBlock[MAXPLAYERS+1] = {false, ...}
Handle hQueryCvarsTimer;

public void OnMapStart() {
    hQueryCvarsTimer = CreateTimer(10.0, OnQueryTimer, _, TIMER_REPEAT);
}

public void OnMapEnd() {
    delete hQueryCvarsTimer;
}

public Action OnQueryTimer(Handle timer) {
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && !IsFakeClient(i)) {
        QueryCvars(i);
    }
}

public void OnClientPutInServer(int client) {
    QueryCvars(client);
}

public void CvarResults(QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvar, const char[] cvarvalue, any value) {
    if(result == ConVarQuery_Okay) {
        if(cvar[3] == 'i') {
            if(StringToFloat(cvarvalue) < 0.03) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
        else if(cvar[0] == 'f') {
            if(StringToFloat(cvarvalue) < 60.0) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
        else if(cvar[0] == 'r') {
            if(StringToInt(cvarvalue) < 25000) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
    }
}

void QueryCvars(int client) {
    QueryClientConVar(client, "cl_interp", CvarResults);
    QueryClientConVar(client, "fps_max", CvarResults);
    QueryClientConVar(client, "rate", CvarResults);
}

void BlockClient(int client, const char[] cvar, const char[] cvarvalue) {
    FakeClientCommand(client, "cl_predict 0");
    bBlock[client] = true;

    PrintToChat(client, "Значение команды \"%s\" должен быть выше или равна к \"%s\".", cvar, cvarvalue);
    PrintToChat(client, "Что-бы продолжить играть на сервере без лагов, поменяйте значение команд.");
}

void UnBlockClient(int client) {
    if(bBlock[client]) {
        FakeClientCommand(client, "cl_predict 1");
        bBlock[client] = false;
    }
}
 
Последнее редактирование:
Решение

valaka

не играю в мм с 2014 и вам не советую
Сообщения
128
Реакции
87
Не рекомендую заниматься этим, могу помочь выставить значения, у меня стоит такой плагин
Многие не понимают в рейтах ничего, ограничивают команды, зависящие от скорости интернета и команды,которые являются результатом деления двух других команд...
Когда у человека интернет слабенький на 0.5мбит и у него 196608 rate,ему принудительно ставят 786462 чтобы у него были промахи по всем, поэтому в данном деле нужно делать либо с понимаем, либо никак
 

koboyahsilee

Участник
Сообщения
8
Реакции
0
C++:
#include <sdktools>
#include <cstrike>

bool bBlock[MAXPLAYERS+1] = {false, ...}
Handle hQueryCvarsTimer;

public void OnMapStart() {
    hQueryCvarsTimer = CreateTimer(10.0, OnQueryTimer, _, TIMER_REPEAT);
}

public void OnMapEnd() {
    delete hQueryCvarsTimer;
}

public Action OnQueryTimer(Handle timer) {
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && !IsFakeClient(i)) {
        QueryCvars(i);
    }
}

public void OnClientPutInServer(int client) {
    QueryCvars(client);
}

public void CvarResults(QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvar, const char[] cvarvalue, any value) {
    if(result == ConVarQuery_Okay) {
        if(cvar[3] == 'i') {
            if(StringToFloat(cvarvalue) < 0.03) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
        else if(cvar[0] == 'f') {
            if(StringToFloat(cvarvalue) < 60.0) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
        else if(cvar[0] == 'r') {
            if(StringToInt(cvarvalue) < 25000) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
    }
}

void QueryCvars(int client) {
    QueryClientConVar(client, "cl_interp", CvarResults);
    QueryClientConVar(client, "fps_max", CvarResults);
    QueryClientConVar(client, "rate", CvarResults);
}

void BlockClient(int client, const char[] cvar, const char[] cvarvalue) {
    FakeClientCommand(client, "cl_predict 0");
    bBlock[client] = true;

    PrintToChat(client, "Значение команды \"%s\" должен быть выше или равна к \"%s\".", cvar, cvarvalue);
    PrintToChat(client, "Что-бы продолжить играть на сервере без лагов, поменяйте значение команд.");
}

void UnBlockClient(int client) {
    if(bBlock[client]) {
        FakeClientCommand(client, "cl_predict 1");
        bBlock[client] = false;
    }
}
[/QUOTE]
игра CSS
я так понимаю скомпилировать sourcemod.
можно вывести список команд. которые должны поменять когда в спекторах
cl_cmdrate 66
cl_updaterate 66
cl_interp0.03
 

LEII4A

Участник
Сообщения
741
Реакции
135
C++:
#include <sdktools>
#include <cstrike>

bool bBlock[MAXPLAYERS+1] = {false, ...}
Handle hQueryCvarsTimer;

public void OnMapStart() {
    hQueryCvarsTimer = CreateTimer(10.0, OnQueryTimer, _, TIMER_REPEAT);
}

public void OnMapEnd() {
    delete hQueryCvarsTimer;
}

public Action OnQueryTimer(Handle timer) {
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && !IsFakeClient(i)) {
        QueryCvars(i);
    }
}

public void OnClientPutInServer(int client) {
    QueryCvars(client);
}

public void CvarResults(QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvar, const char[] cvarvalue, any value) {
    if(result == ConVarQuery_Okay) {
        if(cvar[3] == 'i') {
            if(StringToFloat(cvarvalue) < 0.03) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
        else if(cvar[0] == 'f') {
            if(StringToFloat(cvarvalue) < 60.0) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
        else if(cvar[0] == 'r') {
            if(StringToInt(cvarvalue) < 25000) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
    }
}

void QueryCvars(int client) {
    QueryClientConVar(client, "cl_interp", CvarResults);
    QueryClientConVar(client, "fps_max", CvarResults);
    QueryClientConVar(client, "rate", CvarResults);
}

void BlockClient(int client, const char[] cvar, const char[] cvarvalue) {
    FakeClientCommand(client, "cl_predict 0");
    bBlock[client] = true;

    PrintToChat(client, "Значение команды \"%s\" должен быть выше или равна к \"%s\".", cvar, cvarvalue);
    PrintToChat(client, "Что-бы продолжить играть на сервере без лагов, поменяйте значение команд.");
}

void UnBlockClient(int client) {
    if(bBlock[client]) {
        FakeClientCommand(client, "cl_predict 1");
        bBlock[client] = false;
    }
}
игра CSS
я так понимаю скомпилировать sourcemod.
можно вывести список команд. которые должны поменять когда в спекторах
cl_cmdrate 66
cl_updaterate 66
cl_interp0.03
[/QUOTE]
C++:
#include <sdktools>
#include <cstrike>
#include <morecolors>

bool bBlock[MAXPLAYERS+1] = {false, ...}
Handle hQueryCvarsTimer;

public void OnMapStart() {
    hQueryCvarsTimer = CreateTimer(10.0, OnQueryTimer, _, TIMER_REPEAT);
}

public void OnMapEnd() {
    delete hQueryCvarsTimer;
}

public Action OnQueryTimer(Handle timer) {
    for(int i = 1; i <= MaxClients; i++) if(IsClientInGame(i) && !IsFakeClient(i)) {
        QueryCvars(i);
    }
}

public void OnClientPutInServer(int client) {
    QueryCvars(client);
}

public void CvarResults(QueryCookie cookie, int client, ConVarQueryResult result, const char[] cvar, const char[] cvarvalue, any value) {
    if(result == ConVarQuery_Okay) {
        if(cvar[3] == 'i') {
            if(StringToFloat(cvarvalue) < 0.031) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
        else if(cvar[0] == 'c') {
            if(StringToFloat(cvarvalue) < 66) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
        else if(cvar[0] == 'r') {
            if(StringToInt(cvarvalue) < 25000) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
         else if(cvar[0] == 'u') {
            if(StringToInt(cvarvalue) < 66) BlockClient(client, cvar, cvarvalue);
            else UnBlockClient(client);
        }
    }
}

void QueryCvars(int client) {
    QueryClientConVar(client, "cl_interp", CvarResults);
    QueryClientConVar(client, "cl_cmdrate", CvarResults);
    QueryClientConVar(client, "rate", CvarResults);
    QueryClientConVar(client, "cl_updaterate", CvarResults);
}

void BlockClient(int client, const char[] cvar, const char[] cvarvalue) {
    FakeClientCommand(client, "cl_predict 0");
    bBlock[client] = true;

    CPrintToChat(client, "{white}[{springgreen}РЕЙТЫ{white}] {red}Значение команды {blueviolet}\"%s\" {red}должен быть выше {darkgreen}\"%s\".", cvar, cvarvalue);
    CPrintToChat(client, "{white}[{springgreen}РЕЙТЫ{white}] {magenta}Что-бы продолжить играть на сервере без лагов, измените значения команд!");
}

void UnBlockClient(int client) {
    if(bBlock[client]) {
        FakeClientCommand(client, "cl_predict 1");
        bBlock[client] = false;
    }
}
Покрасил для заметности
 

Z-RAY-Z

Участник
Сообщения
775
Реакции
243
добавил еще проверку на значение fps_max (багают триггера бустов и не только).
Просто издеваемся над такими, которые пытаются взять преимущество с минимальной интерполяцией
Опиши пожалуйста эти 2 пункта по-подробнее, а то сколько лет играю в КС и не в курсе =(
 

Madness aka null138

Участник
Сообщения
721
Реакции
784
Опиши пожалуйста эти 2 пункта по-подробнее, а то сколько лет играю в КС и не в курсе =(
первый словами сложно описать, но я попытаюсь.
при низких фпс(ниже 32) по каким то причинам если в момент входа в энтити trigger_push, дважды нажав кнопку присесть можно получить буст со силой в 2-3 раза больше заданной в параметрах энтити. Это конечно работает на любых значених фпс, но шансы большие только при низких количествах фпс.

а второй это банально отключение предугадывание движений игрока на стороне клиента, т.е появляется эффект жесткого пинга ибо игра себя ведет "пьяным". Таким образом те, кто снижают интерполяцию на стороне клиента, получат наоборот жесткий лаг. А снижают интерполяцию для получение превосходства над другими игроками в плане задержки. Все это можно посмотреть на ютубе подробно, там описывают работу интерполяции.
 
Последнее редактирование:

LEII4A

Участник
Сообщения
741
Реакции
135
первый словами сложно описать, но я попытаюсь.
при низких фпс(ниже 32) по каким то причинам если в момент входа в энтити trigger_push, дважды нажав кнопку присесть можно получить буст со силой в 2-3 раза больше заданной в параметрах энтити. Это конечно работает на любых значених фпс, но шансы большие только при низких количествах фпс.

а второй это банально отключение предугадывание движений игрока на стороне клиента, т.е появляется эффект жесткого пинга ибо игра себя ведет "пьяным". Таким образом те, кто снижают интерполяцию на стороне клиента, получат наоборот жесткий лаг. А снижают интерполяцию для получение превосходства над другими игроками в плане задержки. Все это можно посмотреть на ютубе подробно, там описывают работу интерполяции.
На CS:Source бесполезно от слова совсем. Так как в консоли клиента
C-подобный:
Unknown command: cl_predict
 

Truyn

King of clowns
Сообщения
1,591
Реакции
750
Это реализуется одним модулем smac cvarchecker вносишь туда значения кваров которые ты хочешь,и делаешь так чтобы кикало игроков у которых значения другие.
Профит.

А рейты просто жестче выставил без плавающих границ,но насильно ты игрока будешь заставлять менять пропускную способность?
Это глупо.Если у него будет стоять rate 786000 и ты будешь просить его изменить на 196608?
 
Сверху Снизу