Русское сообщество по скриптингу

ANTI PODELKA HLTV

Новые плагины для AMX Mod X, которые были добавлены в базу плагинов нашего форума. Плагины еще не утвеждены администратором/модератором.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

Данный раздел форума служит для добавления новых плагинов в базу нашего форума. После того, как администратор/модератор утвердит плагин, он будет перемещен в раздел "Утвежденные плагины".

Правила при добавлении новых плагинов:

1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. Обязательно выкладывайте исходник sma плагина. Запрещено выкладывать amxx файл.
4. Обязательно указывайте настоящих авторов плагина, если вы использовали чьи-то наработки или функции, указывайте их авторов в сообщении.
5. Необходимо заполнять детальную информацию о плагине (версию, настройки, используемые модули, список изменений и другую).

ANTI PODELKA HLTV

Сообщение seroff » 08 дек 2017, 23:47

Автор: Seroff
Версия: 1.5B
Описание: Плагин защищает сервер от обманщиков которые подделывают HLTV ID
Плагин определяет, что это игрок и выкидывает его с сервера!

Код: Выделить всё
#include <amxmodx>
#include <hamsandwich>

new szName[32],szFormat[128],szFile[]="addons/amxmodx/logs/fake_hltv.txt",PLUGIN[][]={"Anti Podelka HLTV","1.5B","Seroff"};

public plugin_init(){
 register_plugin(PLUGIN[0], PLUGIN[1], PLUGIN[2]);
 RegisterHam(Ham_Spawn,"player","szPcheck");
}

public szPcheck(id) set_task(0.1,"szPchecks",id);

public client_connect(id) if(is_user_hltv(id)) set_task(0.5,"antipodelka",id);

public antipodelka(id) query_client_cvar(id, "cl_cmdrate", "szClient");

public szClient(id, const cvar[], const value[]){
 if (!equali(value, "Bad CVAR request")){

  user_kick(id,"Fake Player Detected");

 }
}

public szPchecks(id) if(is_user_hltv(id) && ExecuteHam(Ham_IsPlayer, id)) user_kick(id,"Fake Player Detected");

stock user_kick( const id, const reason[]){
 emessage_begin( MSG_ONE, SVC_DISCONNECT, _, id );
 ewrite_string( reason );
 emessage_end();
 get_user_name(id,szName,charsmax(szName));
 formatex(szFormat,charsmax(szFormat),"User - %s : Reason - %s",szName,reason);
 log_to_file(szFile,szFormat);
}
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
seroff
 
Сообщения: 9
Зарегистрирован: 19 ноя 2017, 16:34
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Pawn
SourcePawn
C++
Php
C#

Re: ANTI PODELKA HLTV

Сообщение oReo » 09 дек 2017, 09:09

seroff, кто вернулся... OMG!
деструктор решает все проблемы: нет переменной - нет проблемы (с) Subb98
Аватара пользователя
oReo
 
Сообщения: 165
Зарегистрирован: 24 май 2017, 05:59
Благодарил (а): 10 раз.
Поблагодарили: 5 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Pawn

Re: ANTI PODELKA HLTV

Сообщение seroff » 09 дек 2017, 20:51

Что не так???
Аватара пользователя
seroff
 
Сообщения: 9
Зарегистрирован: 19 ноя 2017, 16:34
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Pawn
SourcePawn
C++
Php
C#

Re: ANTI PODELKA HLTV

Сообщение oReo » 09 дек 2017, 21:01

seroff, ну ты куда-то пропадал :D
деструктор решает все проблемы: нет переменной - нет проблемы (с) Subb98
Аватара пользователя
oReo
 
Сообщения: 165
Зарегистрирован: 24 май 2017, 05:59
Благодарил (а): 10 раз.
Поблагодарили: 5 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Pawn

Re: ANTI PODELKA HLTV

Сообщение Subb98 » 09 дек 2017, 21:46

seroff, объясните, пожалуйста, зачем нужен этот плагин, если всё настраивается в Dproto / Reunion?

Добавлено спустя 42 минуты 32 секунды:
П.с.: улучшил ваш код (некоторые моменты, на мой взгляд, являются критическими):

Код: Выделить всё
#pragma semicolon 1

#include <amxmodx>
#include <hamsandwich>

public plugin_init() {
    
register_plugin("Anti Fake HLTV""1.5B""Seroff");
    
RegisterHam(Ham_Spawn"player""checkPlayerHam"1);
}

public 
client_putinserver(id) {
    if(
is_user_hltv(id)) {
        
set_task(0.5"checkPlayerCvar"id);
    }
}

public 
checkPlayerCvar(const id) {
    
query_client_cvar(id"cl_cmdrate""getCvarResult");
}

public 
getCvarResult(const id, const cvar[], const value[]) {
    if(!
equali(value"Bad CVAR request")) {
        
custom_kick(id);
    }
}

public 
checkPlayer(const id) {
    if(
is_user_hltv(id) && ExecuteHam(Ham_IsPlayerid)) {
        
custom_kick(id);
    }
}

stock custom_kick(const id) {
    new 
szName[32], szAuthId[24], szIp[16];
    
get_user_name(idszNamecharsmax(szName));
    
get_user_authid(idszAuthIdcharsmax(szAuthId));
    
get_user_ip(idszIpcharsmax(szIp), 1);
    
    
logging("Player name: %s | SteamID: %s | IP: %s"szNameszAuthIdszIp);
    
    
server_cmd("kick #%d ^"Fake player detected^""get_user_userid(id));
}

stock logging(const message[], any:...) {
    static 
logsDir[64], file[sizeof logsDir 32], time[22], msg[512];

    if(!
logsDir[0]) {
        new 
len get_localinfo("amxx_logs"logsDircharsmax(logsDir));
        
formatex(logsDir[len], charsmax(logsDir) - len"/fake_hltv");

        if(!
dir_exists(logsDir)) {
            
mkdir(logsDir);
        }
    }

    new 
pfile;

    
get_time("%Y%m%d"timecharsmax(time));
    
formatex(filecharsmax(file), "%s/%s.log"logsDirtime);
    
vformat(msgcharsmax(msg), message2);

    if((
pfile fopen(file"a"))) {
        
get_time("%d/%m/%Y - %H:%M:%S"timecharsmax(time));
        
fprintf(pfile"%s: %s^n"timemsg);
        
fclose(pfile);
    }
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: ANTI PODELKA HLTV

Сообщение seroff » 09 дек 2017, 22:36

Та заметил на серваках, что эта шняга работает и давай сделать что то, а так спс
Subb98 писал(а):seroff, объясните, пожалуйста, зачем нужен этот плагин, если всё настраивается в Dproto / Reunion?

Добавлено спустя 42 минуты 32 секунды:
П.с.: улучшил ваш код (некоторые моменты, на мой взгляд, являются критическими):

Код: Выделить всё
#pragma semicolon 1

#include <amxmodx>
#include <hamsandwich>

public plugin_init() {
    register_plugin("Anti Fake HLTV", "1.5B", "Seroff");
    RegisterHam(Ham_Spawn, "player", "checkPlayerHam", 1);
}

public client_putinserver(id) {
    if(is_user_hltv(id)) {
        set_task(0.5, "checkPlayerCvar", id);
    }
}

public checkPlayerCvar(const id) {
    query_client_cvar(id, "cl_cmdrate", "getCvarResult");
}

public getCvarResult(const id, const cvar[], const value[]) {
    if(!equali(value, "Bad CVAR request")) {
        custom_kick(id);
    }
}

public checkPlayer(const id) {
    if(is_user_hltv(id) && ExecuteHam(Ham_IsPlayer, id)) {
        custom_kick(id);
    }
}

stock custom_kick(const id) {
    new szName[32], szAuthId[24], szIp[16];
    get_user_name(id, szName, charsmax(szName));
    get_user_authid(id, szAuthId, charsmax(szAuthId));
    get_user_ip(id, szIp, charsmax(szIp), 1);
    
    logging
("Player name: %s | SteamID: %s | IP: %s", szName, szAuthId, szIp);
    
    server_cmd
("kick #%d ^"Fake player detected^"", get_user_userid(id));
}

stock logging(const message[], any:...) {
    static logsDir[64], file[sizeof logsDir + 32], time[22], msg[512];

    if(!logsDir[0]) {
        new len = get_localinfo("amxx_logs", logsDir, charsmax(logsDir));
        formatex(logsDir[len], charsmax(logsDir) - len, "/fake_hltv");

        if(!dir_exists(logsDir)) {
            mkdir(logsDir);
        }
    }

    new pfile;

    get_time("%Y%m%d", time, charsmax(time));
    formatex(file, charsmax(file), "%s/%s.log", logsDir, time);
    vformat(msg, charsmax(msg), message, 2);

    if((pfile = fopen(file, "a"))) {
        get_time("%d/%m/%Y - %H:%M:%S", time, charsmax(time));
        fprintf(pfile, "%s: %s^n", time, msg);
        fclose(pfile);
    }


Добавлено спустя 1 минуту 2 секунды:
Удалили меня от сюда и лень было регистрироваться, а друг попросил срочно скачать плагин ну давать раз так выложить что то
oReo писал(а):seroff, ну ты куда-то пропадал :D
Аватара пользователя
seroff
 
Сообщения: 9
Зарегистрирован: 19 ноя 2017, 16:34
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Pawn
SourcePawn
C++
Php
C#


Вернуться в Добавленные новые плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8