Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

3 страниц V   1 2 3

Определение steam игрока.

Статус пользователя Nixon
сообщение 4.7.2014, 18:24
Сообщение #21


Стаж: 12 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Не?

Код
#include <amxmodx>

#define PLUGIN_NAME        "Check Steam Player"
#define PLUGIN_VERS        "1.0"
#define PLUGIN_AUTH        "NIXON"

#pragma semicolon 1

new bool: gpSteam[33];

public plugin_init()    {
    register_plugin(PLUGIN_NAME, PLUGIN_VERS, PLUGIN_AUTH);
    
    register_clcmd("say /test", "ClCmd_Test");
}

public client_disconnect(id)    {
    if(gpSteam[id])
        gpSteam[id] = false;
}

public client_authorized(id)    {
    if(is_user_steam(id))
        gpSteam[id] = true;
}

public ClCmd_Test(id)    {
    if(gpSteam[id])
        client_print(id, print_chat, "Вы STEAM игрок.");
    else
        client_print(id, print_chat, "Вы NON-STEAM игрок.");
}

stock bool:is_user_steam(id)
{
    static iPointer;
    if(iPointer || (iPointer = get_cvar_pointer("dp_r_id_provider")))
    {
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        
        return (get_pcvar_num(iPointer) == 2) ? true : false;
    }
    
    return false;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя wopox3
сообщение 4.7.2014, 18:29
Сообщение #22


Стаж: 13 лет

Сообщений: 333
Благодарностей: 222
Полезность: 902

Цитата(Nixon @ 4.7.2014, 19:24) *
Не?

Код
#include <amxmodx>

#define PLUGIN_NAME        "Check Steam Player"
#define PLUGIN_VERS        "1.0"
#define PLUGIN_AUTH        "NIXON"

#pragma semicolon 1

new bool: gpSteam[33];

public plugin_init()    {
    register_plugin(PLUGIN_NAME, PLUGIN_VERS, PLUGIN_AUTH);
    
    register_clcmd("say /test", "ClCmd_Test");
}

public client_disconnect(id)    {
    if(gpSteam[id])
        gpSteam[id] = false;
}

public client_authorized(id)    {
    if(is_user_steam(id))
        gpSteam[id] = true;
}

public ClCmd_Test(id)    {
    if(gpSteam[id])
        client_print(id, print_chat, "Вы STEAM игрок.");
    else
        client_print(id, print_chat, "Вы NON-STEAM игрок.");
}

stock bool:is_user_steam(id)
{
    static iPointer;
    if(iPointer || (iPointer = get_cvar_pointer("dp_r_id_provider")))
    {
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        
        return (get_pcvar_num(iPointer) == 2) ? true : false;
    }
    
    return false;
}



Вот, то что нужно было! и с оптимизацией :).

Как раз!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 5.7.2014, 3:09
Сообщение #23
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

хах, trollface прав thank_you2.gif

Код:
#include <amxmodx>

#define PLUGIN "CheckSteam"
#define VERSION "1.0"
#define AUTHOR "Esecman"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
}

public client_authorized(id)
{
new name[32]
get_user_name(id, name, 31)

if(is_user_steam(id))
{
log_to_file("steam.log", "%s is steam!", name)
}
}

stock bool:is_user_steam(id)
{
static iPointer;
if(iPointer || (iPointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();

return (get_pcvar_num(iPointer) == 2) ? true : false;
}

return false;
}


ps.gif А почему-то у меня при client_authorized() не работала данная функция в плагине :3

Отредактировал: Esecman, - 5.7.2014, 3:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Esecman
сообщение 5.7.2014, 3:15
Сообщение #24
Стаж: 12 лет

Сообщений: 945
Благодарностей: 208
Полезность: 0

Код:
// Наказание за non-steam
#include <amxmodx>

#define PLUGIN "CheckSteamWithKick"
#define VERSION "1.0"
#define AUTHOR "Esecman"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
}

public client_authorized(id)
{

if(is_user_bot(id) || is_user_hltv(id)) return

new name[32]
get_user_name(id, name, 31)

if(is_user_steam(id))
{
log_to_file("steam.log", "%s is steam!", name)
}

else
{
kick_user(id)
}
}

kick_user(id)
{
new userID = get_user_userid(id)
server_cmd("kick ^"#%d^" You don't have steam!", userID)
}

stock bool:is_user_steam(id)
{
static iPointer;
if(iPointer || (iPointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();

return (get_pcvar_num(iPointer) == 2) ? true : false;
}

return false;
}


Отредактировал: Esecman, - 5.7.2014, 3:24
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 5.7.2014, 3:41
Сообщение #25
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Nixon,
Код:
    if(gpSteam[id])
gpSteam[id] = false;

->
Код:
    gpSteam[id] = false;


Цитата(trollface @ 4.7.2014, 17:38) *
Esecman,
на стадии авторизации уже можно =|

В client_connect уже можно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 6.7.2014, 13:50
Сообщение #26
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

[WPMG]PRoSToTeM@, лучше всё же в authorized: если Steam-клиент начнёт коннектиться, но оффнется раньше putinserver - disconnect не вызовется и переменная так и останется true, и если следом на тот же слот зайдёт пиратка - ошибочно будет считаться Steam'ом.

Вот финальная версия без хардкода:
Код
/**
*    Modified by Safety1st
*      http://c-s.net.ua/forum/index.php?act=findpost&pid=624739
*
*    Changes are:
*    - there is nothing to mention
*
*    Original plugin:
*      http://c-s.net.ua/forum/index.php?act=findpost&pid=623902
*/

#include <amxmodx>

#define PLUGIN_NAME        "Check Steam Player"
#define PLUGIN_VERS        "1.0"
#define PLUGIN_AUTH        "NIXON"

#define MAX_PLAYERS        32
#define DP_AUTH_STEAM    2    // native Steam

#pragma semicolon 1

new bool: gpSteam[MAX_PLAYERS + 1];

public plugin_init()    {
    register_plugin(PLUGIN_NAME, PLUGIN_VERS, PLUGIN_AUTH);
    
    register_clcmd("say /test", "ClCmd_Test");
}

public client_authorized(id)    {
    gpSteam[id] = is_user_steam(id) ? true : false;
}

public ClCmd_Test(id)    {
    if(gpSteam[id])
        client_print(id, print_chat, "Вы STEAM игрок.");
    else
        client_print(id, print_chat, "Вы NON-STEAM игрок.");
}

bool:is_user_steam(id) {
    static iPointer;
    if(iPointer || (iPointer = get_cvar_pointer("dp_r_id_provider")))
    {
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        
        return (get_pcvar_num(iPointer) == DP_AUTH_STEAM) ? true : false;
    }
    
    return false;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 6.7.2014, 17:15
Сообщение #27
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(Safety1st @ 6.7.2014, 15:50) *
[WPMG]PRoSToTeM@, лучше всё же в authorized: если Steam-клиент начнёт коннектиться, но оффнется раньше putinserver - disconnect не вызовется и переменная так и останется true, и если следом на тот же слот зайдёт пиратка - ошибочно будет считаться Steam'ом.

Authorized вызывается раньше PutInServer, так что не спорь, с Authorized будет та же ситуация, что и Connect проходить (по поводу Disconnect). А вообще Authorized вызывается из Connect.
А насчёт следом, то в Connect же заново определять будет, не будет ничего ошибочно считаться стимом, откуда ты вообще такое взял?
Эксперт блин, хватит давать ложную информацию.

Отредактировал: [WPMG]PRoSToTeM@, - 6.7.2014, 18:07
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 6.7.2014, 17:31
Сообщение #28
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Воу-воу) Мы уже знаем, что ты самый умный и знающий.

Обнуление переменной стояло в оригинале только в disconnect'е, а в моей фразе было главным то, что disconnect не всегда вызывается. Это я от тебя узнал в своё время, между прочим.

Если хочешь меня поправить - сделай это грамотно и красиво, предварительно вникнув в написанное мной. Не нужно фейспалмами раскидываться. В противном случае:
Цитата(Arkshine)
Not sure what you are trying to achieve, if you want to enlarge your e-penis, go elsewhere.


Цитата
В client_connect уже можно.

А, я въехал: ты решил, что я с этим спорю. Понятно: поспешил - людей насмешил. Обвинение 'хватит давать ложную информацию' от тебя было очень неприятно услышать sad.gif

Отредактировал: Safety1st, - 6.7.2014, 17:36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 6.7.2014, 17:35
Сообщение #29
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(Safety1st @ 6.7.2014, 19:31) *
Обнуление переменной стояло в оригинале только в disconnect'е.

А зачем в disconnect обнулять?
Зачем ты в своём коде используешь authorized, когда лучше connect?
Ты можешь по фактам говорить, а не по предположениям? Почему для тебя лучше в authorized, а не connect?

Отредактировал: [WPMG]PRoSToTeM@, - 6.7.2014, 17:36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 6.7.2014, 17:37
Сообщение #30
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

[WPMG]PRoSToTeM@, перечитай пост мой.
Что можно - не спорю, мне всё равно. Я оставил так, как было в оригинале, меня это полностью устраивает. Другое у тебя мнение - пожалуйста, будь при нём, только успокойся :D

Цитата([WPMG]PRoSToTeM@ @ 6.7.2014, 19:35) *
А зачем в disconnect обнулять?

Вот и я про то же) Глаза раскрой xD
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 6.7.2014, 17:38
Сообщение #31
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(Safety1st @ 6.7.2014, 19:31) *
А, я въехал: ты решил, что я с этим спорю. Понятно: поспешил - людей насмешил. Обвинение 'хватит давать ложную информацию' от тебя было очень неприятно услышать sad.gif

Просто меня уже выбешивает когда пишут основываясь на предположениях (да ещё и ложь), а не по фактам.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 6.7.2014, 17:40
Сообщение #32
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Бесит - твои проблемы. Я основываюсь на фактах. А факт в том, что disconnect вызывается не всегда. Твои слова. Значит, и обнуление, если делать в одном месте, должно быть в другой функции. Что authorized всегда вызывается - это тоже факт. Вот там всё и делаю. Где предположения? Где ложь?

Ты хоть усрись, в connect переносить не буду: authorized ничем не хуже и лучше соответствует логике:
Код
/* Called when client gets valid STEAM id (usually
* between client_connect() and client_putinserver()). */
forward client_authorized(id);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 6.7.2014, 17:46
Сообщение #33
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(Safety1st @ 6.7.2014, 15:50) *
лучше всё же в authorized: если Steam-клиент начнёт коннектиться, но оффнется раньше putinserver - disconnect не вызовется и переменная так и останется true, и если следом на тот же слот зайдёт пиратка - ошибочно будет считаться Steam'ом.

Я не пойму как пытаешься обосновать, что authorized лучше connect?

Цитата(Safety1st @ 6.7.2014, 19:40) *
Ты хоть усрись, в connect переносить не буду: authorized ничем не хуже и лучше соответствует логике:
Код
/* Called when client gets valid STEAM id (usually
* between client_connect() and client_putinserver()). */
forward client_authorized(id);

Дпрото уже в connect знает, что это стим игрок или же нет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 6.7.2014, 17:47
Сообщение #34
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Пруф опубликован: получать ID в тот момент, когда вызывается функция, сигнализирующая о получении ID игроком. Дальше спорить не буду. Я свой выбор сделал и не настаиваю на том, что это абсолютная истина.

Ты по ходу так и не въехал, что пукан у тебя зря бомбанул. Старая обида за обнародование перед администрациями AMX-X, c-s.net и DS твоих попыток понизить эффективность WHBlocker что ли?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 6.7.2014, 17:52
Сообщение #35
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(Safety1st @ 6.7.2014, 15:50) *
[WPMG]PRoSToTeM@, лучше всё же в authorized: если Steam-клиент начнёт коннектиться, но оффнется раньше putinserver - disconnect не вызовется и переменная так и останется true, и если следом на тот же слот зайдёт пиратка - ошибочно будет считаться Steam'ом.

Ты мне объясни где здесь доказательство того, что authorized лучше connect.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 6.7.2014, 17:54
Сообщение #36
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Я этот вопрос в процитированном сообщении абсолютно не затрагиваю. Не думал, что у тебя не хватит мозгов сообразить, что мой пост относится только к этой части:
Цитата([WPMG]PRoSToTeM@ @ 5.7.2014, 5:41) *
Nixon,
Код:
    if(gpSteam[id])
gpSteam[id] = false;

->
Код:
    gpSteam[id] = false;
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 6.7.2014, 17:56
Сообщение #37
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(Safety1st @ 6.7.2014, 19:47) *
Ты по ходу так и не въехал, что пукан у тебя зря бомбанул. Старая обида

Если бы такой бред написал бы кто-то другой у меня бы всё равно бомбануло.

Цитата(Safety1st @ 6.7.2014, 19:54) *
Я этот вопрос в процитированном сообщении абсолютно не затрагиваю.

Цитата(Safety1st @ 6.7.2014, 15:50) *
лучше всё же в authorized

Лучше по сравнению с чем тогда?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 6.7.2014, 17:56
Сообщение #38
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Ok. В следующий раз просто посмеюсь над тобой)

Цитата([WPMG]PRoSToTeM@ @ 6.7.2014, 19:56) *
Лучше по сравнению с чем тогда?

Чем в disconnect. Речь про сброс переменной.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 6.7.2014, 17:59
Сообщение #39
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(Safety1st @ 6.7.2014, 19:54) *
что мой пост относится только к этой части:

В этой части я имел в виду: зачем делать проверку на true, если можно сразу обнулить (это тоже самое что делать проверку task_exists перед remove_task).

Цитата(Safety1st @ 6.7.2014, 19:56) *
Чем в disconnect. Речь про сброс переменной.

Зачем ты отвечаешь на ту часть поста, в которой я указал на "лишние операции", я же не имел в виду какую-то "ошибку алгоритма".

Отредактировал: [WPMG]PRoSToTeM@, - 6.7.2014, 17:59
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 6.7.2014, 18:00
Сообщение #40
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Да. А я дополнил: вообще перенести обнуление в другое место, чтобы избежать редкой, но возможной ошибки в определении.

Цитата([WPMG]PRoSToTeM@ @ 6.7.2014, 19:59) *
Зачем ты отвечаешь на ту часть поста, в которой я указал на "лишние операции", я же не имел в виду какую-то "ошибку алгоритма".

Потому что их 'объединяет' одна и та же функция.
Ok, в след. раз не буду твои посты упоминать, раз ты такой ранимый и геморройный.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
3 страниц V   1 2 3
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: