Ошибка компиляции плагина "#include <tas>"

Ammy

Участник
Сообщения
81
Реакции
16
Операционная система
Linux
Текст ошибки
plugin.sp(3) : fatal error 183: cannot read from file: "tas"
При компиляции плагина возникает ошибка, перерыл инет найти такой "inc" не смог.

Мб есть у кого такой инклуд? Или кто то знает как решить проблему.
Bonus:
#include <sourcemod>
#include <SteamWorks>
#include <tas>

Database g_hDB;

int g_iVKID[65];

char sTokenAccess[256],
     sStatusText[256],
     sGroupID[32],
     sCommand[256];

bool g_bPrint[65],
     g_bTook[65];

public void OnPluginStart()
{
    ConVar
    hCvar = CreateConVar("sm_vk_token_access", "токен", "Токен доступа"); hCvar.AddChangeHook(OnTokenChanged);
    hCvar.GetString(sTokenAccess, sizeof sTokenAccess);

    hCvar = CreateConVar("sm_vk_group_id", "айди", "Айди группы без club, только цифры"); hCvar.AddChangeHook(OnGIDChanged);
    hCvar.GetString(sGroupID, sizeof sGroupID);

    hCvar = CreateConVar("sm_vk_status_text", "name", "Статус который игрокам будет необходимо указать в вк"); hCvar.AddChangeHook(OnSTChanged);
    hCvar.GetString(sStatusText, sizeof sStatusText);

    hCvar = CreateConVar("sm_vk_command", "sm_givecredits #{uid} 100000", "Команда которая выполниться от имени сервера"); hCvar.AddChangeHook(OnCommandChanged);
    hCvar.GetString(sCommand, sizeof sCommand);

    AutoExecConfig(true, "vk_bonus");   

    char sError[256];

    g_hDB = SQLite_UseDatabase("vk_bonus", sError, sizeof sError);
    if (!g_hDB)
    {
        SetFailState("Database failure: %s", sError);
    }

    g_hDB.Query(SQL_Callback_CheckError,"CREATE TABLE IF NOT EXISTS `users` (`account_id` INT NOT NULL UNIQUE,`vk_id` INT NOT NULL UNIQUE);");

    RegConsoleCmd("sm_vkbonus", vkmenyo);
    RegConsoleCmd("sm_vkstest", test);

    AddCommandListener(chat, "say");
    AddCommandListener(chat, "say_team");

    for (int i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            OnClientPutInServer(i);
        }
    }
}

public Action test(int iClient, int args)
{
    char sReWCommand[256], sBuff[64];
    strcopy(sReWCommand, sizeof sReWCommand, "sm_addvip #{uid} \"vip1\" 259200");
    
    IntToString(GetClientUserId(iClient), sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{uid}", sBuff);
    
    IntToString(iClient, sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{cid}", sBuff);
    
    GetClientName(iClient, sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{name}", sBuff);
    
    PrintToServer(sReWCommand);
    ServerCommand(sReWCommand);
    
    return Plugin_Handled;
}

public void OnTokenChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sTokenAccess, sizeof sTokenAccess, sNewValue);
}

public void OnGIDChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sGroupID, sizeof sGroupID, sNewValue);
}

public void OnSTChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sStatusText, sizeof sStatusText, sNewValue);
}

public void OnCommandChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sCommand, sizeof sCommand, sNewValue);
}

public void OnClientPutInServer(int iClient)
{
    g_bTook[iClient] =
    g_bPrint[iClient] = false;
    g_iVKID[iClient] = -1;
    if(!IsFakeClient(iClient))
    {
        char szQuery[256];
        FormatEx(szQuery, sizeof(szQuery), "SELECT `vk_id` FROM `users` WHERE `account_id` = '%d';", GetSteamAccountID(iClient));
        g_hDB.Query(SQL_Callback_SelectClient, szQuery, GetClientUserId(iClient));
    }
}


public void SQL_Callback_SelectClient(Database hDatabase, DBResultSet hResults, const char[] sError, any iUserID)
{
    if(sError[0])
        LogError("SQL_Callback_SelectClient: %s", sError);

    int iClient = GetClientOfUserId(iUserID);
    if(iClient)
    {
        if(hResults.FetchRow())
        {
            g_bTook[iClient] = true;
            g_iVKID[iClient] = hResults.FetchInt(0);
        }
        else
            g_iVKID[iClient] = 0;
    }
}

public Action vkmenyo(int iClient, int args)
{
    CreditsMenyo(iClient);
    return Plugin_Handled;
}

public void CreditsMenyo(int iClient)
{
    Menu hMenu = new Menu(CreditsMenuHandler);

    hMenu.SetTitle("------VK-BONUS------\n ");

    hMenu.AddItem(NULL_STRING, "Как получить бонус? \n ");
    hMenu.AddItem(NULL_STRING, "Ввести ID страницы");

    hMenu.Display(iClient, MENU_TIME_FOREVER);
}

public int CreditsMenuHandler(Menu hMenu, MenuAction action, int iClient, int pick)
{
    if (action == MenuAction_Select)
    {
        if(!pick)
        {
            OpenInstruction(iClient);
            return;
        }
        else if(g_iVKID[iClient] == -1)
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Подождите, ваши данные загружаются.");
            return;
        }
        else if(g_bTook[iClient])
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Вы уже получали бонус.");
            return;
        }
        g_bPrint[iClient] = true;
        TAS_PrintToChat(iClient,"[{blue}VK{default}] Введите свой VK ID");
        CreditsMenyo(iClient);
    }
    else if (action == MenuAction_End)
        delete hMenu;
}

public Action chat(int iClient, const char[] command,int args)
{
    if (!g_bPrint[iClient])
        return Plugin_Continue;
    g_bPrint[iClient] = false;
    char byfi[32];
    GetCmdArgString(byfi,32);
    StripQuotes(byfi);
    TrimString(byfi);
    ReplaceString(byfi, 32, "https://vk.com/", NULL_STRING,false);
    ReplaceString(byfi, 32, "vk.com/", NULL_STRING);
    char sBuff[256];
    FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/users.get?user_ids=%s&access_token=%s&v=5.8",byfi,sTokenAccess);

    Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
    SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
    SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted3);
    SteamWorks_SendHTTPRequest(hRequest);
    return Plugin_Handled;
}

public int OnSteamWorksHTTPRequestCompleted3(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse3, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse3(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char id[32],sBuff[256];
        strcopy(id,32,sData[19]);
        id[StrContains(id, ",")] = 0;
        g_iVKID[iClient] = StringToInt(id);
        FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/status.get?uid=%s&access_token=%s&v=5.92",id,sTokenAccess);
        Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
        SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
        SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted);
        SteamWorks_SendHTTPRequest(hRequest);
    }
}

public int OnSteamWorksHTTPRequestCompleted(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char status[64],sBuff[256];
        strcopy(status,64,sData[21]);
        status[strlen(status)-3] = 0;
        //PrintToChatAll("ыфв %s", status);
        
        if (StrContains(status, "no access_token") != -1)
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] {red}ОШИБКА, ОТСУСТВУЕТ ТОКЕН ДОСТУПА!");
            return;
        }
        
        if (!strcmp(sStatusText, status))
        {
            FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/groups.isMember?user_id=%d&group_id=%s&access_token=%s&v=5.92&extended=0",g_iVKID[iClient], sGroupID, sTokenAccess);

            Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
            SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
            SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted2);
            SteamWorks_SendHTTPRequest(hRequest);
            return;
        }
        TAS_PrintToChat(iClient,"[{blue}VK{default}] Ошибка, текст в статусе не совпадает. Проверь правильность текста.");
    }
}

public int OnSteamWorksHTTPRequestCompleted2(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse2, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse2(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char status[32];
        strcopy(status,32,sData[12]);
        status[strlen(status)-1] = 0;
        if(status[0] == '1')
        {
            int AccountID = GetSteamAccountID(iClient);
            char szQuery[512];
            LogMessage("Add user %d %d", AccountID,g_iVKID[iClient]);
            FormatEx(szQuery, sizeof(szQuery), "INSERT INTO `users` (`account_id`, `vk_id`) VALUES (%d, '%d');", AccountID,g_iVKID[iClient]);
            g_bTook[iClient] = true;
            g_hDB.Query(SQL_Callback_CheckError,szQuery);
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Все отлично, сейчас вы получите бонус!")

            char sReWCommand[256], sBuff[64];
            strcopy(sReWCommand, sizeof sReWCommand, sCommand);
        
            IntToString(GetClientUserId(iClient), sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{uid}", sBuff);
        
            IntToString(iClient, sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{cid}", sBuff);
        
            GetClientName(iClient, sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{name}", sBuff);
        
            PrintToServer(sReWCommand);
            ServerCommand(sReWCommand);

            return;
        }
        else
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Тебя нет в группе, вступай https://vk.com/public%s!",sGroupID)
            return;
        }
    }
}

public void SQL_Callback_CheckError(Database hDatabase, DBResultSet results, const char[] szError, any data)
{
    if(szError[0])
    {
        LogError(szError);
    }
}

public void OpenInstruction(int iClient)
{
    Menu hMenu = new Menu(InstructionMenuHandler);

    hMenu.SetTitle("------VK-BONUS------\nКак получить бонус ?\n ");

    char sBuff[128];

    hMenu.AddItem(NULL_STRING, "Заходим в свой вк и копируем ID страницы");
    hMenu.AddItem(NULL_STRING, "Пишем в свой статус вк:");
    hMenu.AddItem(NULL_STRING, sStatusText);
    hMenu.AddItem(NULL_STRING, "Жмем на этот текст");
    hMenu.AddItem(NULL_STRING, "И нажимем в главном меню ввести ID");
    hMenu.AddItem(NULL_STRING, "Пишем в чат ссылку на страницу");
    
    hMenu.ExitBackButton = false;
    hMenu.Display(iClient, MENU_TIME_FOREVER);
}

public int InstructionMenuHandler(Menu hMenu, MenuAction action, int iClient, int pick)
{
    if (action == MenuAction_End)
    {
        delete hMenu;
    }
    if (action == MenuAction_Select)
    {
        CreditsMenyo(iClient);
        return;
    }
}
 
Решение
При компиляции плагина возникает ошибка, перерыл инет найти такой "inc" не смог.

Мб есть у кого такой инклуд? Или кто то знает как решить проблему.
Bonus:
#include <sourcemod>
#include <SteamWorks>
#include <tas>

Database g_hDB;

int g_iVKID[65];

char sTokenAccess[256],
     sStatusText[256],
     sGroupID[32],
     sCommand[256];

bool g_bPrint[65],
     g_bTook[65];

public void OnPluginStart()
{
    ConVar
    hCvar = CreateConVar("sm_vk_token_access", "токен", "Токен доступа"); hCvar.AddChangeHook(OnTokenChanged);
    hCvar.GetString(sTokenAccess, sizeof sTokenAccess);

    hCvar = CreateConVar("sm_vk_group_id", "айди", "Айди группы без club, только цифры"); hCvar.AddChangeHook(OnGIDChanged);
    hCvar.GetString(sGroupID, sizeof sGroupID)...

W1zarD

Участник
Сообщения
134
Реакции
26
При компиляции плагина возникает ошибка, перерыл инет найти такой "inc" не смог.

Мб есть у кого такой инклуд? Или кто то знает как решить проблему.
Bonus:
#include <sourcemod>
#include <SteamWorks>
#include <tas>

Database g_hDB;

int g_iVKID[65];

char sTokenAccess[256],
     sStatusText[256],
     sGroupID[32],
     sCommand[256];

bool g_bPrint[65],
     g_bTook[65];

public void OnPluginStart()
{
    ConVar
    hCvar = CreateConVar("sm_vk_token_access", "токен", "Токен доступа"); hCvar.AddChangeHook(OnTokenChanged);
    hCvar.GetString(sTokenAccess, sizeof sTokenAccess);

    hCvar = CreateConVar("sm_vk_group_id", "айди", "Айди группы без club, только цифры"); hCvar.AddChangeHook(OnGIDChanged);
    hCvar.GetString(sGroupID, sizeof sGroupID);

    hCvar = CreateConVar("sm_vk_status_text", "name", "Статус который игрокам будет необходимо указать в вк"); hCvar.AddChangeHook(OnSTChanged);
    hCvar.GetString(sStatusText, sizeof sStatusText);

    hCvar = CreateConVar("sm_vk_command", "sm_givecredits #{uid} 100000", "Команда которая выполниться от имени сервера"); hCvar.AddChangeHook(OnCommandChanged);
    hCvar.GetString(sCommand, sizeof sCommand);

    AutoExecConfig(true, "vk_bonus");  

    char sError[256];

    g_hDB = SQLite_UseDatabase("vk_bonus", sError, sizeof sError);
    if (!g_hDB)
    {
        SetFailState("Database failure: %s", sError);
    }

    g_hDB.Query(SQL_Callback_CheckError,"CREATE TABLE IF NOT EXISTS `users` (`account_id` INT NOT NULL UNIQUE,`vk_id` INT NOT NULL UNIQUE);");

    RegConsoleCmd("sm_vkbonus", vkmenyo);
    RegConsoleCmd("sm_vkstest", test);

    AddCommandListener(chat, "say");
    AddCommandListener(chat, "say_team");

    for (int i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            OnClientPutInServer(i);
        }
    }
}

public Action test(int iClient, int args)
{
    char sReWCommand[256], sBuff[64];
    strcopy(sReWCommand, sizeof sReWCommand, "sm_addvip #{uid} \"vip1\" 259200");
   
    IntToString(GetClientUserId(iClient), sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{uid}", sBuff);
   
    IntToString(iClient, sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{cid}", sBuff);
   
    GetClientName(iClient, sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{name}", sBuff);
   
    PrintToServer(sReWCommand);
    ServerCommand(sReWCommand);
   
    return Plugin_Handled;
}

public void OnTokenChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sTokenAccess, sizeof sTokenAccess, sNewValue);
}

public void OnGIDChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sGroupID, sizeof sGroupID, sNewValue);
}

public void OnSTChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sStatusText, sizeof sStatusText, sNewValue);
}

public void OnCommandChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sCommand, sizeof sCommand, sNewValue);
}

public void OnClientPutInServer(int iClient)
{
    g_bTook[iClient] =
    g_bPrint[iClient] = false;
    g_iVKID[iClient] = -1;
    if(!IsFakeClient(iClient))
    {
        char szQuery[256];
        FormatEx(szQuery, sizeof(szQuery), "SELECT `vk_id` FROM `users` WHERE `account_id` = '%d';", GetSteamAccountID(iClient));
        g_hDB.Query(SQL_Callback_SelectClient, szQuery, GetClientUserId(iClient));
    }
}


public void SQL_Callback_SelectClient(Database hDatabase, DBResultSet hResults, const char[] sError, any iUserID)
{
    if(sError[0])
        LogError("SQL_Callback_SelectClient: %s", sError);

    int iClient = GetClientOfUserId(iUserID);
    if(iClient)
    {
        if(hResults.FetchRow())
        {
            g_bTook[iClient] = true;
            g_iVKID[iClient] = hResults.FetchInt(0);
        }
        else
            g_iVKID[iClient] = 0;
    }
}

public Action vkmenyo(int iClient, int args)
{
    CreditsMenyo(iClient);
    return Plugin_Handled;
}

public void CreditsMenyo(int iClient)
{
    Menu hMenu = new Menu(CreditsMenuHandler);

    hMenu.SetTitle("------VK-BONUS------\n ");

    hMenu.AddItem(NULL_STRING, "Как получить бонус? \n ");
    hMenu.AddItem(NULL_STRING, "Ввести ID страницы");

    hMenu.Display(iClient, MENU_TIME_FOREVER);
}

public int CreditsMenuHandler(Menu hMenu, MenuAction action, int iClient, int pick)
{
    if (action == MenuAction_Select)
    {
        if(!pick)
        {
            OpenInstruction(iClient);
            return;
        }
        else if(g_iVKID[iClient] == -1)
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Подождите, ваши данные загружаются.");
            return;
        }
        else if(g_bTook[iClient])
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Вы уже получали бонус.");
            return;
        }
        g_bPrint[iClient] = true;
        TAS_PrintToChat(iClient,"[{blue}VK{default}] Введите свой VK ID");
        CreditsMenyo(iClient);
    }
    else if (action == MenuAction_End)
        delete hMenu;
}

public Action chat(int iClient, const char[] command,int args)
{
    if (!g_bPrint[iClient])
        return Plugin_Continue;
    g_bPrint[iClient] = false;
    char byfi[32];
    GetCmdArgString(byfi,32);
    StripQuotes(byfi);
    TrimString(byfi);
    ReplaceString(byfi, 32, "https://vk.com/", NULL_STRING,false);
    ReplaceString(byfi, 32, "vk.com/", NULL_STRING);
    char sBuff[256];
    FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/users.get?user_ids=%s&access_token=%s&v=5.8",byfi,sTokenAccess);

    Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
    SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
    SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted3);
    SteamWorks_SendHTTPRequest(hRequest);
    return Plugin_Handled;
}

public int OnSteamWorksHTTPRequestCompleted3(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse3, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse3(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char id[32],sBuff[256];
        strcopy(id,32,sData[19]);
        id[StrContains(id, ",")] = 0;
        g_iVKID[iClient] = StringToInt(id);
        FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/status.get?uid=%s&access_token=%s&v=5.92",id,sTokenAccess);
        Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
        SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
        SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted);
        SteamWorks_SendHTTPRequest(hRequest);
    }
}

public int OnSteamWorksHTTPRequestCompleted(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char status[64],sBuff[256];
        strcopy(status,64,sData[21]);
        status[strlen(status)-3] = 0;
        //PrintToChatAll("ыфв %s", status);
       
        if (StrContains(status, "no access_token") != -1)
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] {red}ОШИБКА, ОТСУСТВУЕТ ТОКЕН ДОСТУПА!");
            return;
        }
       
        if (!strcmp(sStatusText, status))
        {
            FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/groups.isMember?user_id=%d&group_id=%s&access_token=%s&v=5.92&extended=0",g_iVKID[iClient], sGroupID, sTokenAccess);

            Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
            SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
            SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted2);
            SteamWorks_SendHTTPRequest(hRequest);
            return;
        }
        TAS_PrintToChat(iClient,"[{blue}VK{default}] Ошибка, текст в статусе не совпадает. Проверь правильность текста.");
    }
}

public int OnSteamWorksHTTPRequestCompleted2(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse2, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse2(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char status[32];
        strcopy(status,32,sData[12]);
        status[strlen(status)-1] = 0;
        if(status[0] == '1')
        {
            int AccountID = GetSteamAccountID(iClient);
            char szQuery[512];
            LogMessage("Add user %d %d", AccountID,g_iVKID[iClient]);
            FormatEx(szQuery, sizeof(szQuery), "INSERT INTO `users` (`account_id`, `vk_id`) VALUES (%d, '%d');", AccountID,g_iVKID[iClient]);
            g_bTook[iClient] = true;
            g_hDB.Query(SQL_Callback_CheckError,szQuery);
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Все отлично, сейчас вы получите бонус!")

            char sReWCommand[256], sBuff[64];
            strcopy(sReWCommand, sizeof sReWCommand, sCommand);
       
            IntToString(GetClientUserId(iClient), sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{uid}", sBuff);
       
            IntToString(iClient, sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{cid}", sBuff);
       
            GetClientName(iClient, sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{name}", sBuff);
       
            PrintToServer(sReWCommand);
            ServerCommand(sReWCommand);

            return;
        }
        else
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Тебя нет в группе, вступай https://vk.com/public%s!",sGroupID)
            return;
        }
    }
}

public void SQL_Callback_CheckError(Database hDatabase, DBResultSet results, const char[] szError, any data)
{
    if(szError[0])
    {
        LogError(szError);
    }
}

public void OpenInstruction(int iClient)
{
    Menu hMenu = new Menu(InstructionMenuHandler);

    hMenu.SetTitle("------VK-BONUS------\nКак получить бонус ?\n ");

    char sBuff[128];

    hMenu.AddItem(NULL_STRING, "Заходим в свой вк и копируем ID страницы");
    hMenu.AddItem(NULL_STRING, "Пишем в свой статус вк:");
    hMenu.AddItem(NULL_STRING, sStatusText);
    hMenu.AddItem(NULL_STRING, "Жмем на этот текст");
    hMenu.AddItem(NULL_STRING, "И нажимем в главном меню ввести ID");
    hMenu.AddItem(NULL_STRING, "Пишем в чат ссылку на страницу");
   
    hMenu.ExitBackButton = false;
    hMenu.Display(iClient, MENU_TIME_FOREVER);
}

public int InstructionMenuHandler(Menu hMenu, MenuAction action, int iClient, int pick)
{
    if (action == MenuAction_End)
    {
        delete hMenu;
    }
    if (action == MenuAction_Select)
    {
        CreditsMenyo(iClient);
        return;
    }
}
А в комплект с плагином небыло инклюда?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,520
Реакции
4,979
Попробуй погуглить функции на которые будет ругаться компилятор при убирании этого инклюда из кода.
М/б найдётся инклюд на гитхабе или нщё где-то.
 

idk1703

Участник
Сообщения
48
Реакции
30
всё что там есть с того include файла это TAS_PrintToChat
поменяйте все TAS_PrintToChat => PrintToChat


code:
#include <sourcemod>
#include <SteamWorks>
//#include <tas>

Database g_hDB;

int g_iVKID[65];

char sTokenAccess[256],
     sStatusText[256],
     sGroupID[32],
     sCommand[256];

bool g_bPrint[65],
     g_bTook[65];

public void OnPluginStart()
{
    ConVar
    hCvar = CreateConVar("sm_vk_token_access", "токен", "Токен доступа"); hCvar.AddChangeHook(OnTokenChanged);
    hCvar.GetString(sTokenAccess, sizeof sTokenAccess);

    hCvar = CreateConVar("sm_vk_group_id", "айди", "Айди группы без club, только цифры"); hCvar.AddChangeHook(OnGIDChanged);
    hCvar.GetString(sGroupID, sizeof sGroupID);

    hCvar = CreateConVar("sm_vk_status_text", "name", "Статус который игрокам будет необходимо указать в вк"); hCvar.AddChangeHook(OnSTChanged);
    hCvar.GetString(sStatusText, sizeof sStatusText);

    hCvar = CreateConVar("sm_vk_command", "sm_givecredits #{uid} 100000", "Команда которая выполниться от имени сервера"); hCvar.AddChangeHook(OnCommandChanged);
    hCvar.GetString(sCommand, sizeof sCommand);

    AutoExecConfig(true, "vk_bonus");   

    char sError[256];

    g_hDB = SQLite_UseDatabase("vk_bonus", sError, sizeof sError);
    if (!g_hDB)
    {
        SetFailState("Database failure: %s", sError);
    }

    g_hDB.Query(SQL_Callback_CheckError,"CREATE TABLE IF NOT EXISTS `users` (`account_id` INT NOT NULL UNIQUE,`vk_id` INT NOT NULL UNIQUE);");

    RegConsoleCmd("sm_vkbonus", vkmenyo);
    RegConsoleCmd("sm_vkstest", test);

    AddCommandListener(chat, "say");
    AddCommandListener(chat, "say_team");

    for (int i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            OnClientPutInServer(i);
        }
    }
}

public Action test(int iClient, int args)
{
    char sReWCommand[256], sBuff[64];
    strcopy(sReWCommand, sizeof sReWCommand, "sm_addvip #{uid} \"vip1\" 259200");
    
    IntToString(GetClientUserId(iClient), sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{uid}", sBuff);
    
    IntToString(iClient, sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{cid}", sBuff);
    
    GetClientName(iClient, sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{name}", sBuff);
    
    PrintToServer(sReWCommand);
    ServerCommand(sReWCommand);
    
    return Plugin_Handled;
}

public void OnTokenChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sTokenAccess, sizeof sTokenAccess, sNewValue);
}

public void OnGIDChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sGroupID, sizeof sGroupID, sNewValue);
}

public void OnSTChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sStatusText, sizeof sStatusText, sNewValue);
}

public void OnCommandChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sCommand, sizeof sCommand, sNewValue);
}

public void OnClientPutInServer(int iClient)
{
    g_bTook[iClient] =
    g_bPrint[iClient] = false;
    g_iVKID[iClient] = -1;
    if(!IsFakeClient(iClient))
    {
        char szQuery[256];
        FormatEx(szQuery, sizeof(szQuery), "SELECT `vk_id` FROM `users` WHERE `account_id` = '%d';", GetSteamAccountID(iClient));
        g_hDB.Query(SQL_Callback_SelectClient, szQuery, GetClientUserId(iClient));
    }
}


public void SQL_Callback_SelectClient(Database hDatabase, DBResultSet hResults, const char[] sError, any iUserID)
{
    if(sError[0])
        LogError("SQL_Callback_SelectClient: %s", sError);

    int iClient = GetClientOfUserId(iUserID);
    if(iClient)
    {
        if(hResults.FetchRow())
        {
            g_bTook[iClient] = true;
            g_iVKID[iClient] = hResults.FetchInt(0);
        }
        else
            g_iVKID[iClient] = 0;
    }
}

public Action vkmenyo(int iClient, int args)
{
    CreditsMenyo(iClient);
    return Plugin_Handled;
}

public void CreditsMenyo(int iClient)
{
    Menu hMenu = new Menu(CreditsMenuHandler);

    hMenu.SetTitle("------VK-BONUS------\n ");

    hMenu.AddItem(NULL_STRING, "Как получить бонус? \n ");
    hMenu.AddItem(NULL_STRING, "Ввести ID страницы");

    hMenu.Display(iClient, MENU_TIME_FOREVER);
}

public int CreditsMenuHandler(Menu hMenu, MenuAction action, int iClient, int pick)
{
    if (action == MenuAction_Select)
    {
        if(!pick)
        {
            OpenInstruction(iClient);
            return;
        }
        else if(g_iVKID[iClient] == -1)
        {
            PrintToChat(iClient,"[{blue}VK{default}] Подождите, ваши данные загружаются.");
            return;
        }
        else if(g_bTook[iClient])
        {
            PrintToChat(iClient,"[{blue}VK{default}] Вы уже получали бонус.");
            return;
        }
        g_bPrint[iClient] = true;
        PrintToChat(iClient,"[{blue}VK{default}] Введите свой VK ID");
        CreditsMenyo(iClient);
    }
    else if (action == MenuAction_End)
        delete hMenu;
}

public Action chat(int iClient, const char[] command,int args)
{
    if (!g_bPrint[iClient])
        return Plugin_Continue;
    g_bPrint[iClient] = false;
    char byfi[32];
    GetCmdArgString(byfi,32);
    StripQuotes(byfi);
    TrimString(byfi);
    ReplaceString(byfi, 32, "https://vk.com/", NULL_STRING,false);
    ReplaceString(byfi, 32, "vk.com/", NULL_STRING);
    char sBuff[256];
    FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/users.get?user_ids=%s&access_token=%s&v=5.8",byfi,sTokenAccess);

    Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
    SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
    SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted3);
    SteamWorks_SendHTTPRequest(hRequest);
    return Plugin_Handled;
}

public int OnSteamWorksHTTPRequestCompleted3(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse3, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse3(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char id[32],sBuff[256];
        strcopy(id,32,sData[19]);
        id[StrContains(id, ",")] = 0;
        g_iVKID[iClient] = StringToInt(id);
        FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/status.get?uid=%s&access_token=%s&v=5.92",id,sTokenAccess);
        Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
        SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
        SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted);
        SteamWorks_SendHTTPRequest(hRequest);
    }
}

public int OnSteamWorksHTTPRequestCompleted(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char status[64],sBuff[256];
        strcopy(status,64,sData[21]);
        status[strlen(status)-3] = 0;
        //PrintToChatAll("ыфв %s", status);
        
        if (StrContains(status, "no access_token") != -1)
        {
            PrintToChat(iClient,"[{blue}VK{default}] {red}ОШИБКА, ОТСУСТВУЕТ ТОКЕН ДОСТУПА!");
            return;
        }
        
        if (!strcmp(sStatusText, status))
        {
            FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/groups.isMember?user_id=%d&group_id=%s&access_token=%s&v=5.92&extended=0",g_iVKID[iClient], sGroupID, sTokenAccess);

            Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
            SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
            SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted2);
            SteamWorks_SendHTTPRequest(hRequest);
            return;
        }
        PrintToChat(iClient,"[{blue}VK{default}] Ошибка, текст в статусе не совпадает. Проверь правильность текста.");
    }
}

public int OnSteamWorksHTTPRequestCompleted2(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse2, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse2(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char status[32];
        strcopy(status,32,sData[12]);
        status[strlen(status)-1] = 0;
        if(status[0] == '1')
        {
            int AccountID = GetSteamAccountID(iClient);
            char szQuery[512];
            LogMessage("Add user %d %d", AccountID,g_iVKID[iClient]);
            FormatEx(szQuery, sizeof(szQuery), "INSERT INTO `users` (`account_id`, `vk_id`) VALUES (%d, '%d');", AccountID,g_iVKID[iClient]);
            g_bTook[iClient] = true;
            g_hDB.Query(SQL_Callback_CheckError,szQuery);
            PrintToChat(iClient,"[{blue}VK{default}] Все отлично, сейчас вы получите бонус!")

            char sReWCommand[256], sBuff[64];
            strcopy(sReWCommand, sizeof sReWCommand, sCommand);
        
            IntToString(GetClientUserId(iClient), sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{uid}", sBuff);
        
            IntToString(iClient, sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{cid}", sBuff);
        
            GetClientName(iClient, sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{name}", sBuff);
        
            PrintToServer(sReWCommand);
            ServerCommand(sReWCommand);

            return;
        }
        else
        {
            PrintToChat(iClient,"[{blue}VK{default}] Тебя нет в группе, вступай https://vk.com/public%s!",sGroupID)
            return;
        }
    }
}

public void SQL_Callback_CheckError(Database hDatabase, DBResultSet results, const char[] szError, any data)
{
    if(szError[0])
    {
        LogError(szError);
    }
}

public void OpenInstruction(int iClient)
{
    Menu hMenu = new Menu(InstructionMenuHandler);

    hMenu.SetTitle("------VK-BONUS------\nКак получить бонус ?\n ");

    //char sBuff[128];

    hMenu.AddItem(NULL_STRING, "Заходим в свой вк и копируем ID страницы");
    hMenu.AddItem(NULL_STRING, "Пишем в свой статус вк:");
    hMenu.AddItem(NULL_STRING, sStatusText);
    hMenu.AddItem(NULL_STRING, "Жмем на этот текст");
    hMenu.AddItem(NULL_STRING, "И нажимем в главном меню ввести ID");
    hMenu.AddItem(NULL_STRING, "Пишем в чат ссылку на страницу");
    
    hMenu.ExitBackButton = false;
    hMenu.Display(iClient, MENU_TIME_FOREVER);
}

public int InstructionMenuHandler(Menu hMenu, MenuAction action, int iClient, int pick)
{
    if (action == MenuAction_End)
    {
        delete hMenu;
    }
    if (action == MenuAction_Select)
    {
        CreditsMenyo(iClient);
        return;
    }
}
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
При компиляции плагина возникает ошибка, перерыл инет найти такой "inc" не смог.

Мб есть у кого такой инклуд? Или кто то знает как решить проблему.
Bonus:
#include <sourcemod>
#include <SteamWorks>
#include <tas>

Database g_hDB;

int g_iVKID[65];

char sTokenAccess[256],
     sStatusText[256],
     sGroupID[32],
     sCommand[256];

bool g_bPrint[65],
     g_bTook[65];

public void OnPluginStart()
{
    ConVar
    hCvar = CreateConVar("sm_vk_token_access", "токен", "Токен доступа"); hCvar.AddChangeHook(OnTokenChanged);
    hCvar.GetString(sTokenAccess, sizeof sTokenAccess);

    hCvar = CreateConVar("sm_vk_group_id", "айди", "Айди группы без club, только цифры"); hCvar.AddChangeHook(OnGIDChanged);
    hCvar.GetString(sGroupID, sizeof sGroupID);

    hCvar = CreateConVar("sm_vk_status_text", "name", "Статус который игрокам будет необходимо указать в вк"); hCvar.AddChangeHook(OnSTChanged);
    hCvar.GetString(sStatusText, sizeof sStatusText);

    hCvar = CreateConVar("sm_vk_command", "sm_givecredits #{uid} 100000", "Команда которая выполниться от имени сервера"); hCvar.AddChangeHook(OnCommandChanged);
    hCvar.GetString(sCommand, sizeof sCommand);

    AutoExecConfig(true, "vk_bonus");  

    char sError[256];

    g_hDB = SQLite_UseDatabase("vk_bonus", sError, sizeof sError);
    if (!g_hDB)
    {
        SetFailState("Database failure: %s", sError);
    }

    g_hDB.Query(SQL_Callback_CheckError,"CREATE TABLE IF NOT EXISTS `users` (`account_id` INT NOT NULL UNIQUE,`vk_id` INT NOT NULL UNIQUE);");

    RegConsoleCmd("sm_vkbonus", vkmenyo);
    RegConsoleCmd("sm_vkstest", test);

    AddCommandListener(chat, "say");
    AddCommandListener(chat, "say_team");

    for (int i = 1; i <= MaxClients; i++)
    {
        if (IsClientInGame(i) && !IsFakeClient(i))
        {
            OnClientPutInServer(i);
        }
    }
}

public Action test(int iClient, int args)
{
    char sReWCommand[256], sBuff[64];
    strcopy(sReWCommand, sizeof sReWCommand, "sm_addvip #{uid} \"vip1\" 259200");
   
    IntToString(GetClientUserId(iClient), sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{uid}", sBuff);
   
    IntToString(iClient, sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{cid}", sBuff);
   
    GetClientName(iClient, sBuff, sizeof sBuff);
    ReplaceString(sReWCommand, sizeof sReWCommand, "{name}", sBuff);
   
    PrintToServer(sReWCommand);
    ServerCommand(sReWCommand);
   
    return Plugin_Handled;
}

public void OnTokenChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sTokenAccess, sizeof sTokenAccess, sNewValue);
}

public void OnGIDChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sGroupID, sizeof sGroupID, sNewValue);
}

public void OnSTChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sStatusText, sizeof sStatusText, sNewValue);
}

public void OnCommandChanged(ConVar hCvar, char[] sOldValue, char[] sNewValue)
{
    strcopy(sCommand, sizeof sCommand, sNewValue);
}

public void OnClientPutInServer(int iClient)
{
    g_bTook[iClient] =
    g_bPrint[iClient] = false;
    g_iVKID[iClient] = -1;
    if(!IsFakeClient(iClient))
    {
        char szQuery[256];
        FormatEx(szQuery, sizeof(szQuery), "SELECT `vk_id` FROM `users` WHERE `account_id` = '%d';", GetSteamAccountID(iClient));
        g_hDB.Query(SQL_Callback_SelectClient, szQuery, GetClientUserId(iClient));
    }
}


public void SQL_Callback_SelectClient(Database hDatabase, DBResultSet hResults, const char[] sError, any iUserID)
{
    if(sError[0])
        LogError("SQL_Callback_SelectClient: %s", sError);

    int iClient = GetClientOfUserId(iUserID);
    if(iClient)
    {
        if(hResults.FetchRow())
        {
            g_bTook[iClient] = true;
            g_iVKID[iClient] = hResults.FetchInt(0);
        }
        else
            g_iVKID[iClient] = 0;
    }
}

public Action vkmenyo(int iClient, int args)
{
    CreditsMenyo(iClient);
    return Plugin_Handled;
}

public void CreditsMenyo(int iClient)
{
    Menu hMenu = new Menu(CreditsMenuHandler);

    hMenu.SetTitle("------VK-BONUS------\n ");

    hMenu.AddItem(NULL_STRING, "Как получить бонус? \n ");
    hMenu.AddItem(NULL_STRING, "Ввести ID страницы");

    hMenu.Display(iClient, MENU_TIME_FOREVER);
}

public int CreditsMenuHandler(Menu hMenu, MenuAction action, int iClient, int pick)
{
    if (action == MenuAction_Select)
    {
        if(!pick)
        {
            OpenInstruction(iClient);
            return;
        }
        else if(g_iVKID[iClient] == -1)
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Подождите, ваши данные загружаются.");
            return;
        }
        else if(g_bTook[iClient])
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Вы уже получали бонус.");
            return;
        }
        g_bPrint[iClient] = true;
        TAS_PrintToChat(iClient,"[{blue}VK{default}] Введите свой VK ID");
        CreditsMenyo(iClient);
    }
    else if (action == MenuAction_End)
        delete hMenu;
}

public Action chat(int iClient, const char[] command,int args)
{
    if (!g_bPrint[iClient])
        return Plugin_Continue;
    g_bPrint[iClient] = false;
    char byfi[32];
    GetCmdArgString(byfi,32);
    StripQuotes(byfi);
    TrimString(byfi);
    ReplaceString(byfi, 32, "https://vk.com/", NULL_STRING,false);
    ReplaceString(byfi, 32, "vk.com/", NULL_STRING);
    char sBuff[256];
    FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/users.get?user_ids=%s&access_token=%s&v=5.8",byfi,sTokenAccess);

    Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
    SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
    SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted3);
    SteamWorks_SendHTTPRequest(hRequest);
    return Plugin_Handled;
}

public int OnSteamWorksHTTPRequestCompleted3(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse3, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse3(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char id[32],sBuff[256];
        strcopy(id,32,sData[19]);
        id[StrContains(id, ",")] = 0;
        g_iVKID[iClient] = StringToInt(id);
        FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/status.get?uid=%s&access_token=%s&v=5.92",id,sTokenAccess);
        Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
        SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
        SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted);
        SteamWorks_SendHTTPRequest(hRequest);
    }
}

public int OnSteamWorksHTTPRequestCompleted(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char status[64],sBuff[256];
        strcopy(status,64,sData[21]);
        status[strlen(status)-3] = 0;
        //PrintToChatAll("ыфв %s", status);
       
        if (StrContains(status, "no access_token") != -1)
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] {red}ОШИБКА, ОТСУСТВУЕТ ТОКЕН ДОСТУПА!");
            return;
        }
       
        if (!strcmp(sStatusText, status))
        {
            FormatEx(sBuff, sizeof(sBuff), "https://api.vk.com/method/groups.isMember?user_id=%d&group_id=%s&access_token=%s&v=5.92&extended=0",g_iVKID[iClient], sGroupID, sTokenAccess);

            Handle hRequest = SteamWorks_CreateHTTPRequest(k_EHTTPMethodGET, sBuff);
            SteamWorks_SetHTTPRequestContextValue(hRequest, GetClientUserId(iClient));
            SteamWorks_SetHTTPCallbacks(hRequest, OnSteamWorksHTTPRequestCompleted2);
            SteamWorks_SendHTTPRequest(hRequest);
            return;
        }
        TAS_PrintToChat(iClient,"[{blue}VK{default}] Ошибка, текст в статусе не совпадает. Проверь правильность текста.");
    }
}

public int OnSteamWorksHTTPRequestCompleted2(Handle hRequest, bool bFailure, bool bRequestSuccessful, EHTTPStatusCode eStatusCode, int iClient)
{
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0 && bRequestSuccessful)
        SteamWorks_GetHTTPResponseBodyCallback(hRequest, WebResponse2, GetClientUserId(iClient));
    delete hRequest;
}

public int WebResponse2(const char[] sData, int iClient)
{
    if(!sData[0])
        return;
    iClient = GetClientOfUserId(iClient);
    if(iClient > 0)
    {
        char status[32];
        strcopy(status,32,sData[12]);
        status[strlen(status)-1] = 0;
        if(status[0] == '1')
        {
            int AccountID = GetSteamAccountID(iClient);
            char szQuery[512];
            LogMessage("Add user %d %d", AccountID,g_iVKID[iClient]);
            FormatEx(szQuery, sizeof(szQuery), "INSERT INTO `users` (`account_id`, `vk_id`) VALUES (%d, '%d');", AccountID,g_iVKID[iClient]);
            g_bTook[iClient] = true;
            g_hDB.Query(SQL_Callback_CheckError,szQuery);
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Все отлично, сейчас вы получите бонус!")

            char sReWCommand[256], sBuff[64];
            strcopy(sReWCommand, sizeof sReWCommand, sCommand);
       
            IntToString(GetClientUserId(iClient), sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{uid}", sBuff);
       
            IntToString(iClient, sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{cid}", sBuff);
       
            GetClientName(iClient, sBuff, sizeof sBuff);
            ReplaceString(sReWCommand, sizeof sReWCommand, "{name}", sBuff);
       
            PrintToServer(sReWCommand);
            ServerCommand(sReWCommand);

            return;
        }
        else
        {
            TAS_PrintToChat(iClient,"[{blue}VK{default}] Тебя нет в группе, вступай https://vk.com/public%s!",sGroupID)
            return;
        }
    }
}

public void SQL_Callback_CheckError(Database hDatabase, DBResultSet results, const char[] szError, any data)
{
    if(szError[0])
    {
        LogError(szError);
    }
}

public void OpenInstruction(int iClient)
{
    Menu hMenu = new Menu(InstructionMenuHandler);

    hMenu.SetTitle("------VK-BONUS------\nКак получить бонус ?\n ");

    char sBuff[128];

    hMenu.AddItem(NULL_STRING, "Заходим в свой вк и копируем ID страницы");
    hMenu.AddItem(NULL_STRING, "Пишем в свой статус вк:");
    hMenu.AddItem(NULL_STRING, sStatusText);
    hMenu.AddItem(NULL_STRING, "Жмем на этот текст");
    hMenu.AddItem(NULL_STRING, "И нажимем в главном меню ввести ID");
    hMenu.AddItem(NULL_STRING, "Пишем в чат ссылку на страницу");
   
    hMenu.ExitBackButton = false;
    hMenu.Display(iClient, MENU_TIME_FOREVER);
}

public int InstructionMenuHandler(Menu hMenu, MenuAction action, int iClient, int pick)
{
    if (action == MenuAction_End)
    {
        delete hMenu;
    }
    if (action == MenuAction_Select)
    {
        CreditsMenyo(iClient);
        return;
    }
}
Поменял `Tas_PrintTOChat` на `CGOPrintToChar`, для компиляции будет требовать файл `csgo_colors.inc`
 

Вложения

  • bonus.sp
    12 КБ · Просмотры: 10
  • bonus.smx
    9.2 КБ · Просмотры: 1
Решение

Kaiser

Участник
Сообщения
15
Реакции
2
Если игра не CS:GO, замените TAS_PrintToChat на CPrintToChat и используйте библиотеку цветов MoreColors
 

Ammy

Участник
Сообщения
81
Реакции
16
Если игра не CS:GO, замените TAS_PrintToChat на CPrintToChat и используйте библиотеку цветов MoreColors
Блин я так и сделал, только игра CS:GO.
 
Сверху Снизу