1. Andrey777 Пользователь

    Регистрация:
    30.03.15
    Сообщения:
    262
    Симпатии:
    36
    Пол:
    Мужской
    Skype:
    Andrey777best
    Всем привет, кто может довести этот плагин до ума? Не отображает всех стимов, показывает бота, и что бы убрать иммунитет.
    Код:
    #include <amxmodx>
    #include <cstrike>
    
    #define ADMIN_LEVEL ADMIN_ALL
    
    public plugin_init() {
        register_plugin("Steam Check [MOTD]", "1.0", "Seroff");
        register_clcmd("say /steam", "steamcheck");
        register_clcmd("say_team /steam", "steamcheck");
    }
    
    public steamcheck(id)
    {
            static motd[2000], len;
            len = 0;
            len += formatex(motd[len], charsmax(motd) - len,"<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
            len += formatex(motd[len], charsmax(motd) - len,"<STYLE>body{background:#4c5844;color:#d8ded3;font-family:sans-serif}table{width:100%%;line-height:160%%;font-size:12px}th{border:1px solid;border-color:#889180 #282e22 #282e22 #889180;background:#4c5844;color:#c4b550;padding-left:5px;font:normal;text-align:left}.q{border:1px solid;border-color:#282e22 #889180 #889180 #282e22}tr{background:#3e4637} div{text-align: center; }</STYLE>");
            len += formatex(motd[len], charsmax(motd) - len,"<body><p></p><center><table cellspacing=0 class=q>");
        if(!steam_num()){
          len += formatex(motd[len], charsmax(motd) - len,"<br><br><br><br><br><br><br><br> <caption><div style=^"margin: 15px;^"> <font size=^"5^" color=^"#c4b550^" > <b >Сейчас нет steam игроков</b></font></div><br></caption>");
        }
        else
        {
          len += formatex(motd[len], charsmax(motd) - len,"  <caption><div style=^"margin: 15px;^"> <font size=^"5^" color=^"#c4b550^" > <b >Количество steam игроков на сервере RB|18+|: %d</b></font></div><br></caption>",steam_num());
          len += formatex(motd[len], charsmax(motd) - len,"<tr><th style=^"width: 50%^"><div>#</div></th><th style=^"width: 50%^"><div>Имя</div></th> <th style=^"width:10%^"><div>SteamID</div></th>   <th style=^"width:10%^"><div>Команда</div></th> </tr>");
          for(new i = 1, Name[32], colorteam[8],steamid[35], teamname[32]; i < get_maxplayers()+1; i++) {
           if(is_user_connected(i) && !(get_user_flags(i) & ADMIN_LEVEL) && is_user_steam(i)){
            get_user_name(i, Name, charsmax(Name));
            get_user_authid(i, steamid,charsmax(steamid));
            switch(cs_get_user_team(i))
            {
              case 0:{
            formatex(colorteam,charsmax(colorteam),"#FFFFFF");
            formatex(teamname,charsmax(teamname),"Ещё не определен");
              }
              case 1: {
            formatex(colorteam,charsmax(colorteam),"#E54234");
            formatex(teamname,charsmax(teamname),"Террорист");
              }
              case 2:{
            formatex(colorteam,charsmax(colorteam),"#90D6F4");
            formatex(teamname,charsmax(teamname),"Контр-Террорист");
              }
              case 3:{
            formatex(colorteam,charsmax(colorteam),"#FFFFFF");
            formatex(teamname,charsmax(teamname),"Наблюдатель");
              }
             
            }
            len += formatex(motd[len], charsmax(motd) - len," <tr><br><td><div style=^"margin: 10px;^"><b>%d</b></div></td> <td><div style=^"margin: 10px;^"><b>%s</b></div></td> <td><div style=^"margin: 10px;^"><b>%s</b></div></td> <td><div style=^"margin: 10px;^"><font color=^"%s^"><b>%s</b></font> </div></td></tr>",i,Name,steamid,colorteam,teamname);
          }
         }
        }
            len += formatex(motd[len], charsmax(motd) - len,"</table>");
        len += formatex(motd[len], charsmax(motd) - len,"</center>");
            len += formatex(motd[len], charsmax(motd) - len,"  </body></html>");
            show_motd(id, motd, "Steam Online");
    }
    
    stock steam_num(){
      static Num;
      Num=0;
      for(new i = 1; i < get_maxplayers(); i++) {
        if(is_user_connected(i) && !(get_user_flags(i) & ADMIN_LEVEL) && is_user_steam(i)){
          Num++;
        }
      }
      return Num
    }
    
    stock bool:is_user_steam(id)
    {
    // Author Sh0oter
            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
    }
    
     

    Вложения:

    • steamcheck.sma
      Размер файла:
      3,8 КБ
      Просмотров:
      5
  2. Factor VIP user

    Регистрация:
    10.05.15
    Сообщения:
    65
    Симпатии:
    48
    Пол:
    Мужской
    @Andrey777, не все игроки показываются потому что в motd есть ограничение в 1кб. Кол-во информации, которое выводится в вашем плагине, превышает допустимое (name, steam id, название команды по русски и т.п), поэтому инфа обрезается/не влезает.

    Написал свой вариант. Стили css взял ваши, урезал их по возможности, название команды тоже. Так же убрал модуль cstrike, нафига он вообще ради одной нативы...
    Но этот вариант 100% не покажет 32ух стимовцев, мб чел 10 влезет.
    PHP:
    #include <amxmodx>

    #define CSS_STYLE "<meta charset=UTF-8><style>body{background:#4c5844;color:#d8ded3}th{border:1px solid;border-color:#889180;color:#c4b550;padding-left:5px}div{font-size:25px;color:#c4b550}</style><table width=100%% cellspacing=0 align=center>"
    //#define CSS_STYLE_2 "<meta charset=UTF-8><style>body{background:#4c5844;color:#d8ded3;font-family:sans-serif}table{width:100%%;line-height:160%%;font-size:12px}th{border:1px solid;border-color:#889180 #282e22 #282e22 #889180;background:#4c5844;color:#c4b550;padding-left:5px;font:normal;text-align:left}.q{border:1px solid;border-color:#282e22 #889180 #889180 #282e22}tr{background:#3e4637}</style><table cellspacing=0 class=q align=center>"

    public plugin_init()
    {
        
    register_plugin("Steam Players List""1.0""Factor");
       
        
    register_clcmd("say /steam""SteamPlayersList");
        
    register_clcmd("say_team /steam""SteamPlayersList");
    }

    public 
    SteamPlayersList(id)
    {
        static 
    sBuffer[2047], ileniSteamPlayers,
        
    iPlayers[32], iNumiiplayer,
        
    szName[16], szSteamID[25], szTeam[11];
       
        
    ilen formatex(sBuffer[ilen], charsmax(sBuffer) - ilenCSS_STYLE);
       
        
    get_players(iPlayersiNum"ch");
       
        for(
    0iNumi++)
        {
            
    iplayer iPlayers[i];
           
            if(!
    is_user_steam(iplayer)) continue;
           
            if(++
    iSteamPlayers == 1ilen += formatex(sBuffer[ilen], charsmax(sBuffer) - ilen"<tr><th>#</th><th>Имя</th><th>SteamID</th><th>Команда</th></tr>");
           
            
    get_user_name(iplayerszNamecharsmax(szName));
            
    get_user_authid(iplayerszSteamIDcharsmax(szSteamID));
            
    get_user_team(iplayerszTeamcharsmax(szTeam));
           
            
    ilen += formatex(sBuffer[ilen], charsmax(sBuffer) - ilen"<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>"iSteamPlayersszNameszSteamIDszTeam);
        }
       
        if(
    iSteamPlayersilen += formatex(sBuffer[ilen], charsmax(sBuffer) - ilen"<div style=^"margin-top:15px;margin-bottom:15px^" align=center><b>Сейчас steam игроков на сервере: %d</b></div>"iSteamPlayers), iSteamPlayers 0;
        else 
    ilen += formatex(sBuffer[ilen], charsmax(sBuffer) - ilen"<div style=^"margin-top:99px^" align=center><b>Сейчас steam игроков нет.</b></div>");
       
        
    show_motd(idsBuffer"Steam Players Online");
    }

    stock 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) ? 0;
        }
        return 
    0;
    }
     
    Andrey777 нравится это.
  3. MakapoH. Команда форума

    Регистрация:
    06.02.16
    Сообщения:
    652
    Симпатии:
    240
    Пол:
    Мужской
    Нафига вообще в мотд показывать игроков?)
     
  4. Factor VIP user

    Регистрация:
    10.05.15
    Сообщения:
    65
    Симпатии:
    48
    Пол:
    Мужской
    И вообще, на мой взгляд, вывод в motd такое большое кол-во инфы бред полный + зависит от длины ника и steamid.
    Лучше уж в консоль выводить.
     
  5. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    Какая разница-то. get_user_team может неправильно определять в отличие от cs_get_user_team.
     
  6. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.593
    Симпатии:
    4.166
    Пол:
    Мужской
    @PRoSToC0der, если модуль cstrike не использовался ранее, то разница есть.
    но да, лучше тогда pdata юзнуть
     
  7. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    @neygomon там хуки жрущие есть? А так по логике, модуль cstrike должен использоваться на большинстве Counter-Strike серверов.
     
  8. Factor VIP user

    Регистрация:
    10.05.15
    Сообщения:
    65
    Симпатии:
    48
    Пол:
    Мужской
    Если есть возможность, то стараюсь обходиться без доп. модулей. Насколько мне известно, индекс вроде шалит, но название тимы всегда верно показывало. Кстати, разве это не фиксанули?
     
  9. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.593
    Симпатии:
    4.166
    Пол:
    Мужской
    @Factor, нет.
    get_user_team чекает сообщение TeamInfo.
    а там не всегда верная инфа, например при использовании колорчата.

    @PRoSToC0der, нет, но как модуль он говно)
     
  10. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    Колбэк же обратно не идёт.
     
  11. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.593
    Симпатии:
    4.166
    Пол:
    Мужской
  12. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    Отправка мессаги из плагина не хуканётся амыксом.
     
  13. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.593
    Симпатии:
    4.166
    Пол:
    Мужской
    Че эт? Если отправить через e* (emessage_begin например)
     
  14. Andrey777 Пользователь

    Регистрация:
    30.03.15
    Сообщения:
    262
    Симпатии:
    36
    Пол:
    Мужской
    Skype:
    Andrey777best
    Так поговорили, и как лучше сделать решили? :(
     
  15. Himera Пользователь

    Регистрация:
    21.06.16
    Сообщения:
    72
    Симпатии:
    4
    Я думаю лучше выводить информацию по прицепу admin check принципе всем нужен ток ник игрока который играет через стим
     
  16. d3m37r4 Пользователь

    Регистрация:
    19.07.15
    Сообщения:
    167
    Симпатии:
    46
    Пол:
    Мужской
    VKcom:
    id109544387
    Skype:
    d1mas1kw0w
    @Himera, больше инфы в текстовом чате только, ясное дело что нужен только ник игрока. По логике вещей, вообще можно не заморачиваться и выдать префикс в чате, и на этом успокоиться, инфа есть и ладно, а дойдет она до юзера или нет это его проблемы.
     
  17. Factor VIP user

    Регистрация:
    10.05.15
    Сообщения:
    65
    Симпатии:
    48
    Пол:
    Мужской
    @neygomon, думал как лучше сделать, а тут как обычно, баги и т.п
    Для вывода такой инфы разумнее использовать не мотд, а консоль. Туда и информации напихать по больше можно, и в консоли сервера можно мониторить, и все стимовцы влезут.
    Команда в консоль: steamlist
    PHP:
    #include <amxmodx>
    #include <fakemeta>

    public plugin_init()
    {
        
    register_plugin("Steam Players List""1.0""Factor");
        
    register_concmd("steamlist""SteamPlayersList");
    }

    public 
    SteamPlayersList(id)
    {
        static 
    iPlayers[32], iNumisiplayer,
        
    szTeam[5], szName[32], szSteamID[25], szIP[16],
        
    iTimeiPingiLoss;

        
    get_players(iPlayersiNum"ch");

        for(
    0iNumi++)
        {
            
    iplayer iPlayers[i];
       
            if(!
    is_user_steam(iplayer)) continue;
       
            
    get_user_name(iplayerszNamecharsmax(szName));
            
    get_user_authid(iplayerszSteamIDcharsmax(szSteamID));
            
    get_user_ping(iplayeriPingiLoss);
            
    iTime get_user_time(iplayer);
            
    get_user_ip(iplayerszIPcharsmax(szIP), 1);

            switch(
    get_pdata_int(iplayer114))
            {
                case 
    0szTeam "UNS";
                case 
    1szTeam "T";
                case 
    2szTeam "CT";
                case 
    3szTeam "SPEC";
            }
       
            if(++
    == 1console_print(id"### STEAM PLAYERS LIST ###"), console_print(id"#      name userid uniqueid frag time ping loss adress team");
            
    console_print(id"# %d ^"%s^" %d %s %d %02d:%02d %d %d %s %s"sszNameget_user_userid(iplayer), szSteamIDget_user_frags(iplayer), iTime 60iTime 60iPingiLossszIPszTeam);
        }

        if(!
    sconsole_print(id"### NO STEAM PLAYERS ###");
    }

    stock 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) ? 0;
        }
        return 
    0;
    }
    Теперь используется pdata для получения команды игрока. Вообще можно и без команды), но как хотите
    Если вы используете не fakemeta, а cstrike то нужно заменить get_pdata_int(iplayer, 114) на cs_get_user_team(iplayer) и include <fakemeta> на <cstrike> в исходнике.
    Если используете два модуля, то без разницы.
    Тот пост не могу редактировать.
    PHP:
    #include <amxmodx>
    #include <fakemeta>

    #define CSS_STYLE "<meta charset=UTF-8><style>body{background:#4c5844;color:#d8ded3}th{border:1px solid;border-color:#889180;color:#c4b550;padding-left:5px}div{font-size:25px;color:#c4b550}</style><table width=100%% cellspacing=0 align=center>"
    //#define CSS_STYLE_2 "<meta charset=UTF-8><style>body{background:#4c5844;color:#d8ded3;font-family:sans-serif}table{width:100%%;line-height:160%%;font-size:12px}th{border:1px solid;border-color:#889180 #282e22 #282e22 #889180;background:#4c5844;color:#c4b550;padding-left:5px;font:normal;text-align:left}.q{border:1px solid;border-color:#282e22 #889180 #889180 #282e22}tr{background:#3e4637}</style><table cellspacing=0 class=q align=center>"

    public plugin_init()
    {
        
    register_plugin("Steam Players List Motd""1.1""Factor");

        
    register_clcmd("say /steam""SteamPlayersList");
        
    register_clcmd("say_team /steam""SteamPlayersList");
    }

    public 
    SteamPlayersList(id)
    {
        static 
    sBuffer[2047], ileniSteamPlayers,
        
    iPlayers[32], iNumiiplayer,
        
    szName[16], szSteamID[25], szTeam[5];

        
    ilen formatex(sBuffer[ilen], charsmax(sBuffer) - ilenCSS_STYLE);

        
    get_players(iPlayersiNum"ch");

        for(
    0iNumi++)
        {
            
    iplayer iPlayers[i];
        
            if(!
    is_user_steam(iplayer)) continue;
        
            if(++
    iSteamPlayers == 1ilen += formatex(sBuffer[ilen], charsmax(sBuffer) - ilen"<tr><th>#</th><th>Имя</th><th>SteamID</th><th>Команда</th></tr>");
        
            
    get_user_name(iplayerszNamecharsmax(szName));
            
    get_user_authid(iplayerszSteamIDcharsmax(szSteamID));
        
            switch(
    get_pdata_int(iplayer114))
            {
                case 
    0szTeam "UNS";
                case 
    1szTeam "T";
                case 
    2szTeam "CT";
                case 
    3szTeam "SPEC";
            }
        
            
    ilen += formatex(sBuffer[ilen], charsmax(sBuffer) - ilen"<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>"iSteamPlayersszNameszSteamIDszTeam);
        }

        if(
    iSteamPlayersilen += formatex(sBuffer[ilen], charsmax(sBuffer) - ilen"<div style=^"margin-top:15px;margin-bottom:15px^" align=center><b>Сейчас steam игроков на сервере: %d</b></div>"iSteamPlayers), iSteamPlayers 0;
        else 
    ilen += formatex(sBuffer[ilen], charsmax(sBuffer) - ilen"<div style=^"margin-top:99px^" align=center><b>Сейчас steam игроков нет.</b></div>");

        
    show_motd(idsBuffer"Steam Players Online");
    }

    stock 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) ? 0;
        }
        return 
    0;
    }
     
    Последнее редактирование: 25.07.16
  18. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    307
    Симпатии:
    143
    Пол:
    Мужской
    А ещё лучше мини вебсервер (прямо на сервере), который по определённому запросу будет отдавать страницу со списком стим игроков.