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;
}
}