Steam Bonus [дроп сервера]

Tenseus

Пользователь
Регистрация
12 Июн 2017
Сообщения
32
Симпатии
1
Пол
Мужской
#1
Всем привет.

Есть вот такой плагин:
Код:
#include <amxmodx>
#include <reapi>

new round;
new g_has[33];

public plugin_init()
{
    register_plugin("Steam Bonus", "1.0", "xFit");
    register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w");
    register_event("HLTV", "RoundStart", "a", "1=0", "2=0");
    RegisterHookChain(RG_CBasePlayer_Spawn, "Player_Spawn", true);
}

public eRestart()round = 0;

public RoundStart()round++;                                 

public client_connect(id)g_has[id]=0;

public Player_Spawn(id)
{                           
    if(is_user_steam(id) && ~get_user_flags(id) & ADMIN_LEVEL_E)
    {                                                         
        if(round < -1) return false; // -1 - с первого раунда; 1 - после первого раунда; 2 - после второго раунда... и т.д.                   
        rg_set_user_armor(id, 100, ARMOR_VESTHELM);
        rg_add_account(id, 400);
        new TeamName:team = get_member(id, m_iTeam);             
        if(team == TEAM_CT) rg_give_defusekit (id, true),g_has[id]++;                                                                                                         
        if(g_has[id]<2)client_print_color(id, print_team_default, "^4[STEAM] ^1Каждый раунд Вам будут выданы бонусы за steam клиент.");
    }
    return PLUGIN_HANDLED;
}
 
stock bool:is_user_steam(id)
{                       
    static dp_pointer;
    if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
    {               
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        return (get_pcvar_num(dp_pointer) == 2) ? true : false;
    }
    return false;
}

При компиляции ошибок нет и при запуске сервера тоже все ОК, но при смене карты непосредственно из игры через [1.4.1] Maps Menu, сервер падает...
P.S. Если делать рестарт или смену карты через консоль, сервер не падает.

Вопрос к знающим людям, где в этом плагине дыра?
 

MakapoH.

Разработчик
Регистрация
8 Июн 2017
Сообщения
116
Симпатии
66
Пол
Мужской
#2
Без данного плагина не падает?
 

Tenseus

Пользователь
Регистрация
12 Июн 2017
Сообщения
32
Симпатии
1
Пол
Мужской
#4
Без данного плагина не падает?
Без плагина не падает.
21 Июн 2017
я в скриптинге не силён, это?
Код:
stock bool:is_user_steam(id)
{                       
    static dp_pointer;
    if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
    {               
        server_cmd("dp_clientinfo %d", id);
        server_exec();
        return (get_pcvar_num(dp_pointer) == 2) ? true : false;
    }
    return false;
}
 

MakapoH.

Разработчик
Регистрация
8 Июн 2017
Сообщения
116
Симпатии
66
Пол
Мужской
#5
Inline, Оно же требует наличие Reautcheck, не? Не факт же, что у него есть)
Но переименовать надо бы is_user_steam. Например в user_steam.
И кстати, раньше проверка на стима не работала у некоторых юзеров, хотя reaut был
 

Inline

Пользователь
Регистрация
8 Июн 2017
Сообщения
226
Симпатии
78
Пол
Мужской
#6
Inline, Оно же требует наличие Reautcheck, не? Не факт же, что у него есть)
Но переименовать надо бы is_user_steam. Например в user_steam.
И кстати, раньше проверка на стима не работала у некоторых юзеров, хотя reaut был
Reunion нужен, API reauthcheck и не используется
 
Последнее редактирование: Inline

Tenseus

Пользователь
Регистрация
12 Июн 2017
Сообщения
32
Симпатии
1
Пол
Мужской
#11
Теперь это пишет в логах, хотя Reunion включён...
HTML:
L 06/22/2017 - 11:23:37: [ReAPI] Reunion: isn't available
L 06/22/2017 - 11:23:37: [AMXX] Run time error 10 (plugin "reapi_steam_bonus.amxx") (native "REU_GetAuthtype") - debug not enabled!
L 06/22/2017 - 11:23:37: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
 

Inline

Пользователь
Регистрация
8 Июн 2017
Сообщения
226
Симпатии
78
Пол
Мужской
#12
Tenseus, у тебя всё последних версий? Странненько)
 

neygomon

Его Темнейшество :j
Пользователь
Регистрация
8 Июн 2017
Сообщения
835
Симпатии
379
Пол
Мужской
#16
Tenseus, обновись на последние версии.
так же попробуй reunion выше грузить чем amxmodx
 

neygomon

Его Темнейшество :j
Пользователь
Регистрация
8 Июн 2017
Сообщения
835
Симпатии
379
Пол
Мужской

Tenseus

Пользователь
Регистрация
12 Июн 2017
Сообщения
32
Симпатии
1
Пол
Мужской
#19
Нарисовался еще 1 мелкий баг в этом плагине.

При первом подключении к серверу steam игрок получает сообщение о том, что ему будут выданы бонусы каждый раунд, но беда в том, что это работает только для КТ, для Т сообщение выводится каждый раунд.

Как сделать так, что бы и для КТ и для Т сообщение показывалось только 1 раз при подключении?
 

MakapoH.

Разработчик
Регистрация
8 Июн 2017
Сообщения
116
Симпатии
66
Пол
Мужской
#20
Tenseus,
PHP:
if(team == TEAM_CT) rg_give_defusekit (id, true),g_has[id]++;
-->
PHP:
g_has[id]++;
if(team == TEAM_CT) rg_give_defusekit (id, true)