Вступаем в группу steam через сервер

Тема в разделе "Программирование / Скриптинг", создана пользователем Данилка, 7 мар 2012.

  1. Данилка

    Данилка

    Сообщения:
    62
    Симпатии:
    15
    Лазил в древних форумах у американцев и наткнулся совершенно случайно на не скомпилированный плагин который при написании в чат команды !join выводит окно клиенту с вашей группой =)

    У меня появилась идейка для тех кто шарит в написании плагинах =)
    Как на щет того чтоб каждый кто присоединился на сервер выводилось меню типа вот так:

    Вы хотите вступить в группу сервера | You want join group this server ?

    1. Да/yes

    2. Нет/no

    Клиент жмет на один появляеться окно ссылкой на вашу группу и вступает в нее

    если жмет неть то ни чего не происходит)

    Вот сам плагин который стоит доработать просто я видел что кто то в запросах искал такой плагин воть решил не много помочь)

    PHP:
    Plugin Template generated by Pawn Studio */

     
    #include <sourcemod>

     
    public Plugin:myinfo 
     {
     
    name "JoinSteamgroup",
     
    author "{7~11} Troll",
     
    description "type !join to open steamgrouppage.",
     
    version "1.0.1",
     
    url "www.711clan.net"
     
    }

     new 
    Handle:g_href INVALID_HANDLE;
     public 
    OnPluginStart()
     {
     
    RegConsoleCmd("join"JoinOn);
     
    g_href CreateConVar("sm_join_href""http://steamcommunity.com/groups/yourgroup""href link to your steamgroup");
     }
     public 
    Action:JoinOn(client,args)
     {
     
    decl String:href[255];
     
    GetConVarString(g_hrefhrefsizeof(href));
     
    ShowMOTDPanel(client"join"hrefMOTDPANEL_TYPE_URL);
     return 
    Plugin_Continue;
     }

    P.S Также можно использовать ет плагин в качестве показа правил сервера))

    Добавлено через 3 часа 46 минут
    Сюды вставляем ссыль вашей группы =)
    Ну еще можно команду вместо join поменять)

    Вот нашел еще кое что интерестное может кто знаком с EventScripts судя по описанию он добовляет людей в группу которые зашли на сервер вот только не хрена не понятно как его переделать в smx и вобще рубит он или не вот ссыль =)

    И вот еще что накопал
     
    Последнее редактирование: 8 мар 2012
    He11man, Cmapuk, palanich и 4 другим нравится это.
  2. ggginex

    ggginex Помог? Жми спасибо

    Сообщения:
    26
    Симпатии:
    1
    а куда ты выложил та этот плагин ? что то найти его не могу
     
  3. CTe6eJIeK_vRn

    CTe6eJIeK_vRn Супер-модератор

    Сообщения:
    2.014
    Симпатии:
    1.797
    ggginex, а ты внимательнее почитай
     
  4. ggginex

    ggginex Помог? Жми спасибо

    Сообщения:
    26
    Симпатии:
    1
    так это просто идея или что ?( я не понимаю будь другом обясни
     
  5. fallen1994

    fallen1994

    Сообщения:
    2.347
    Симпатии:
    544
    Исходный код плагина тут выставлен, голову включаем и внимательно читаем.
    Тут и плагин, и идея новой реализации, которая многим по-нраву.
     
  6. МаТрОсКиН

    МаТрОсКиН

    Сообщения:
    2
    Симпатии:
    1
    уважаемые кому не сложно можете пожалуто выложить уже полностью реализованный и рабочий плагин....... просто для многих новичков в етой сфере очень не просто разобратся с етим.
     
    ★Сириус★ нравится это.
  7. Данилка

    Данилка

    Сообщения:
    62
    Симпатии:
    15
    Скажем такс...если есть у кого руки и голова на плечах он может сделать из данных идей и исходника плагин конфетку но таких скорее всего нет =)

    Я лично использовал ет плагин для показа правил на сервере =)
     
  8. Manian

    Manian

    Сообщения:
    14
    Симпатии:
    0
    Блин,выложите готовый плагин плиз)
    Я не сильно в плагинах шарю)
     
  9. w1b3

    w1b3

    Сообщения:
    70
    Симпатии:
    12
    готов накинуть 100р создателю готового и полностью рабочего плагина :)

    ЗЫ: я понимаю, что мало, но мож еще кто сподобиться проспонсировать, и так человек 10 скинет по 100р - уже норма ;)
     
  10. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.563
    Симпатии:
    1.149
    PHP:
    #pragma semicolon 1
    #include <sourcemod>

    new Handle:g_href INVALID_HANDLE;

    public 
    Plugin:myinfo 
    {
        
    name "название плага",
        
    author "",
        
    description "",
        
    version "0.1",
        
    url ""
    }

    public 
    OnPluginStart()
    {
        
    // квар можно изменить на вам нужный
        
    g_href CreateConVar("sm_motd_panel_url""Ссылка""Ссылка на страницу или картинку. можно вписать в server.cfg");
        
        
    RegConsoleCmd("say"CommandSay);
        
    RegConsoleCmd("say_team"CommandSay);
    }

    public  
    Action:CommandSay(clientargs )
    {
        
    decl String:ClSay[16];
        
    GetCmdArgString(ClSaysizeof(ClSay)-1);
        
    StripQuotes(ClSay);
        
    TrimString(ClSay);
        if( 
    StrEqual(ClSay"!команда"false))
        {
            
    decl String:href[255]; 
            
    GetConVarString(g_hrefhrefsizeof(href));
            
    ShowMOTDPanel(client,""hrefMOTDPANEL_TYPE_URL);
        }
        
        return 
    Plugin_Continue;
    }
     
    R1KO и palanich нравится это.
  11. w1b3

    w1b3

    Сообщения:
    70
    Симпатии:
    12
    Друг! под словами "полностью рабочий плагин", я имел ввиду:

    архив из 3 файлов, smx & sp и cfg, положив которые в нужные папки на серв - человек получит работающий плагин. А в cfg произведет нужные ему настройки и изменения.
     
  12. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.563
    Симпатии:
    1.149
    w1b3, Создай файл с расширением .sp и туда это скопируй, отредактируй малость, сохрани. Скомпилируй, и вот тебе готовый плагин, конфиг не нужен для одного квара.
    Видно ты линукс ни когда не видел :-D
     
    R1KO нравится это.
  13. Manian

    Manian

    Сообщения:
    14
    Симпатии:
    0
    Это в scripting кидать?
     
  14. Данилка

    Данилка

    Сообщения:
    62
    Симпатии:
    15
    На первый взгляд все чудно а теперь вопрос тот кто тестил у игрока авто-авторизация стим клиента работала через окно motd ? =)
     
  15. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.563
    Симпатии:
    1.149
    Данилка, в принципе motd это браузер, должно работать.
     
  16. Данилка

    Данилка

    Сообщения:
    62
    Симпатии:
    15
    Неа авто-авторизация не канает но есть другой способ что если всместо мотд окна открывался бы стим браузер вот там то как раз таки авто-авторизация канает без всяких проблем только я хз как ет сделать)
     
  17. w1b3

    w1b3

    Сообщения:
    70
    Симпатии:
    12
    Да друг)) я с линуксом знаком только отдаленно.. Название слышал много раз и знаю как оно пишется без ошибок)))
     
  18. Данилка

    Данилка

    Сообщения:
    62
    Симпатии:
    15
    Нашел плагин но исходника неть он приглашает всех людей в группу которые зайдут на сервер может у кого есть мозги исправить ошибки их там около 20 =)

    PHP:
    new PlVers:__version 5;
    new 
    Float:NULL_VECTOR[3];
    new 
    String:NULL_STRING[1];
    new 
    Extension:__ext_core 68;
    new 
    MaxClients;
    new 
    Extension:__ext_smsock 184;
    new 
    Extension:__ext_clientprefs 220;
    public 
    Plugin:myinfo =
    {
        
    name "SteamInvite",
        
    description "",
        
    author "УЕБОК",
        
    version "1.0",
        
    url "N/A"
    };
    new 
    Handle:g_Cvar_Host;
    new 
    Handle:g_Cvar_Port;
    new 
    Handle:g_Cvar_BaseURL;
    new 
    String:g_Host[64];
    new 
    g_Port;
    new 
    String:g_BaseURL[64];
    new 
    Handle:g_Socket;
    new 
    Handle:g_hClientCookie;
    new 
    bool:lateLoaded;
    public 
    __ext_core_SetNTVOptional()
    {
        
    MarkNativeAsOptional("GetFeatureStatus");
        
    MarkNativeAsOptional("RequireFeature");
        
    MarkNativeAsOptional("AddCommandListener");
        
    MarkNativeAsOptional("RemoveCommandListener");
        
    VerifyCoreVersion();
        return 
    0;
    }

    bool:StrEqual(String:str1[], String:str2[], bool:caseSensitive)
    {
        return 
    strcmp(str1str2caseSensitive) == 0;
    }

    ExplodeString(String:text[], String:split[], String:buffers[][], maxStringsmaxStringLength)
    {
        new 
    reloc_idx 0;
        new 
    idx 0;
        new 
    total 0;
        new 
    var1;
        if (
    maxStrings 1) {
            return 
    0;
        }
        new 
    var3 SplitString(text[reloc_idx], splitbuffers[total], maxStringLength);
        
    idx var3;
        while (
    var3 != -1) {
            
    reloc_idx idx reloc_idx;
            if (
    text[reloc_idx]) {
                
    total++;
                if (
    total >= maxStrings) {
                    return 
    total;
                }
            }
            new 
    var2;
            if (
    text[reloc_idx]) {
                
    total++;
                
    strcopy(buffers[total], maxStringLengthtext[reloc_idx]);
            }
            return 
    total;
        }
        new 
    var2;
        if (
    text[reloc_idx]) {
            
    total++;
            
    strcopy(buffers[total], maxStringLengthtext[reloc_idx]);
        }
        return 
    total;
    }

    public 
    APLRes:AskPluginLoad2(Handle:myselfbool:lateString:error[], err_max)
    {
        
    lateLoaded late;
        return 
    APLRes:0;
    }

    public 
    OnPluginStart()
    {
        
    CreateConVar("sm_group_inviter_version""1.0"""393472false0false0);
        
    g_Cvar_Host CreateConVar("sm_group_inviter_host""www.N/A.ru"""262144false0false0);
        
    g_Cvar_Port CreateConVar("sm_group_inviter_port""80"""262144true1false0);
        
    g_Cvar_BaseURL CreateConVar("sm_group_inviter_url""web/invite_steam.php"""262144false0false0);
        
    g_hClientCookie RegClientCookie("invite-status"""CookieAccess:2);
        
    HookConVarChange(g_Cvar_HostConVarChanged:3);
        
    HookConVarChange(g_Cvar_PortConVarChanged:3);
        
    HookConVarChange(g_Cvar_BaseURLConVarChanged:3);
        if (
    lateLoaded) {
            new 
    1;
            while (
    <= MaxClients) {
                new 
    var1;
                if (
    IsClientInGame(i)) {
                    
    decl String:auth[32];
                    
    GetClientAuthString(iauth32);
                    new 
    var2;
                    if (
    IsLegitSteam(auth)) {
                        
    LoadClientCookie(i);
                        
    i++;
                    }
                    
    i++;
                }
                
    i++;
            }
        }
        return 
    0;
    }

    public 
    OnConfigsExecuted()
    {
        
    GetConVarString(g_Cvar_Hostg_Host256);
        
    g_Port GetConVarInt(g_Cvar_Port);
        
    GetConVarString(g_Cvar_BaseURLg_BaseURL256);
        return 
    0;
    }

    public 
    OnClientAuthorized(clientString:auth[])
    {
        new 
    var1;
        if (!
    IsFakeClient(client)) {
            if (
    AreClientCookiesCached(client)) {
                
    LoadClientCookie(client);
            }
            
    CreateTimer(1CookieTimerGetClientUserId(client), 1);
        }
        return 
    0;
    }

    LoadClientCookie(client)
    {
        
    decl String:buffer[8];
        
    GetClientCookie(clientg_hClientCookiebuffer8);
        new 
    var1;
        if (
    StrEqual(buffer""true)) {
            
    DoGroupInvite(client);
        }
        return 
    0;
    }

    public 
    Action:CookieTimer(Handle:timeruserId)
    {
        new 
    client GetClientOfUserId(userId);
        new 
    var1;
        if (!
    client) {
            return 
    Action:4;
        }
        if (!
    AreClientCookiesCached(client)) {
            return 
    Action:0;
        }
        
    LoadClientCookie(client);
        return 
    Action:4;
    }

    DoGroupInvite(client)
    {
        
    decl String:auth[32];
        
    GetClientAuthString(clientauth32);
        new 
    Handle:headers_pack CreateDataPack();
        
    WritePackCell(headers_packclient);
        
    WritePackString(headers_packauth);
        
    g_Socket SocketCreate(SocketType:1OnSocketError);
        
    SocketSetArg(g_Socketheaders_pack);
        
    SocketConnect(g_SocketOnSocketConnectedOnSocketReceiveOnSocketDisconnectedg_Hostg_Port);
        return 
    0;
    }

    public 
    ConVarChange(Handle:convarString:oldValue[], String:newValue[])
    {
        if (
    g_Cvar_Host == convar) {
            
    GetConVarString(g_Cvar_Hostg_Host256);
        } else {
            if (
    g_Cvar_Port == convar) {
                
    g_Port GetConVarInt(g_Cvar_Port);
            }
            if (
    g_Cvar_BaseURL == convar) {
                
    GetConVarString(g_Cvar_BaseURLg_BaseURL256);
            }
        }
        return 
    0;
    }

    public 
    OnSocketConnected(Handle:socketheaders_pack)
    {
        
    ResetPack(headers_packfalse);
        
    ReadPackCell(headers_pack);
        
    decl String:auth[32];
        
    ReadPackString(headers_packauth32);
        
    decl String:requestStr[1024];
        
    Format(requestStr1024"GET /%s?i=%s HTTP/1.1\r\nHost: %s\r\nConnection: close\r\n\r\n"g_BaseURLauthg_Host);
        
    SocketSend(socketrequestStr, -1);
        return 
    0;
    }

    public 
    OnSocketReceive(Handle:socketString:receiveData[], dataSizeheaders_pack)
    {
        
    ResetPack(headers_packfalse);
        new 
    client ReadPackCell(headers_pack);
        if (
    IsClientConnected(client)) {
            new 
    start StrContains(receiveData"[Steam Group Inviter]"true);
            new 
    var2;
            if (
    start) {
                if (
    AreClientCookiesCached(client)) {
                    
    SetClientCookie(clientg_hClientCookie"OK");
                }
            }
        }
        return 
    0;
    }

    public 
    OnSocketDisconnected(Handle:socketheaders_pack)
    {
        
    CloseHandle(headers_pack);
        
    CloseHandle(socket);
        return 
    0;
    }

    public 
    OnSocketError(Handle:socketerrorTypeerrorNumheaders_pack)
    {
        
    LogError("[Group Inviter] socket error %d (errno %d)"errorTypeerrorNum);
        
    CloseHandle(headers_pack);
        
    CloseHandle(socket);
        return 
    0;
    }

    bool:IsLegitSteam(String:authID[])
    {
        
    decl String:toks[12][16];
        
    ExplodeString(authID":"toks316);
        if (
    StringToInt(toks[8], 10) < 80000000) {
            return 
    true;
        }
        return 
    false;
    }
     
  19. spore

    spore SubPlay.ru

    Сообщения:
    640
    Симпатии:
    148
    Ну просто класс.
     
    Sergey Grinko нравится это.
  20. tooshkan4uk

    tooshkan4uk http://cssrus.ru

    Сообщения:
    423
    Симпатии:
    369
    как бы без этого файлика смысла особого исправлять плагин нет
     
    Monomizer нравится это.