Помогите дописать плагин

msl1

Участник
Сообщения
162
Реакции
20
Птивет всем . Помогите дописать плагин

#include <sourcemod>

new Handle:g_hKV,
String:g_szPath[PLATFORM_MAX_PATH];

new Handle:g_SQL = INVALID_HANDLE

public Plugin:myinfo =
{
name = "timeadmin",
author = "Unknown",
description = "<- Description ->",
version = "1.0",
url = "<- URL ->"
}

public OnPluginStart()
{

if (!SQL_CheckConfig("MySection"))
{
SetFailState("Секция \"MySection\" не найдена в databases.cfg");
return;
}

decl String:error[256];
g_SQL = SQL_Connect("MySection", true, error, 256);
if (g_SQL == INVALID_HANDLE)
{
LogError(error);
SetFailState("Не удалось установить SQL соединение");
return;
}

// тип соединения (mysql или sqlite)
new String:driver[15]; SQL_ReadDriver(g_SQL, driver, 15);

LogMessage("Установлено %s соединение", "SQLite");

// создаем таблицу
if (g_SQL)


{
SQL_TQuery(g_SQL, SQL_DefCallback, "CREATE TABLE my_tab( 'steamid' VARCHAR(52) NOT NULL, `timestamp` varchar(20) NOT NULL, \
PRIMARY KEY (`steamid`))", 0);

}


RegConsoleCmd("sm_timeadmin", Command_timeadmin);

Init_g_hKV();


}

Init_g_hKV()
{
g_hKV = CreateKeyValues("Admins");
BuildPath(Path_SM, g_szPath, sizeof(g_szPath) - 1, "configs/admins.cfg");

if(!FileToKeyValues(g_hKV, g_szPath))
{
LogError("Файл '%s' не найден!", g_szPath);
CloseHandle(g_hKV);
return;
}
}

public SQL_DefCallback(Handle:owner, Handle:hndl, const String:error[], any:data)
{
if (hndl == INVALID_HANDLE) LogError(error);

}

public Action:Command_timeadmin(client, args)
{



decl String:steamid[64];
GetClientAuthString(client, steamid, 32);

new String:query[255];
Format(query, sizeof(query), "SELECT * FROM my_tab WHERE steamid ='%s'", steamid);
new Handle:hquery = SQL_Query(g_SQL, query);
if (hquery != INVALID_HANDLE && SQL_FetchRow(hquery))
{

PrintToChat(client, "\x04Вы уже зарегестрированы!");
SQL_TQuery(g_SQL, SQL_DefCallback, query);
return Plugin_Handled;
}


GetClientAuthString(client, steamid, sizeof(steamid));


KvRewind(g_hKV);
KvJumpToKey(g_hKV, steamid, true);
{
KvSetString(g_hKV, "auth", "steam");
KvSetString(g_hKV, "identity", steamid);
KvSetString(g_hKV, "flags", "bc");
KvSetString(g_hKV, "immunity", "11");

KvSetNum(g_hKV, "expiried", GetTime() + 600);
PrintToChat(client, "\x01 Вы получили 10 минут. Steam_ID: \x04%s\x01", steamid);
}

Format(query, sizeof(query), "INSERT INTO my_tab(steamid, timestamp) VALUES('%s', '%i')", steamid, GetTime() + 86400);
PrintToChat(client, "\x04Фаил записался.");
SQL_TQuery(g_SQL, SQL_DefCallback, query);

KvRewind(g_hKV);
KeyValuesToFile(g_hKV, g_szPath);

ServerCommand("sm_reloadadmins");
return Plugin_Handled;


}

public OnClientPostAdminCheck(client)
{
new String:sSteam[64], expiried;
GetClientAuthString(client, sSteam, sizeof(sSteam));
KvRewind(g_hKV);
if(KvJumpToKey(g_hKV, sSteam))
{
expiried = KvGetNum(g_hKV, "expiried", 0);
if(expiried > 0)
{
if(GetTime() > expiried )
{

KvDeleteThis(g_hKV);
KvRewind(g_hKV);
KeyValuesToFile(g_hKV, g_szPath);
PrintToChat(client, "\x04Ваш срок пользования админ правами истек.");
ServerCommand("sm_reloadadmins");

}

else
{
decl String:sEndTime[50];
FormatTime(sEndTime, sizeof(sEndTime), "%d/%m/%Y - %H:%M", expiried);
PrintToChat(client, "\x01Дата окончания админ прав: \x04%s", sEndTime);
}

}
}

}
не получается сделать
удаление из базы
Format(query, sizeof(query), "DELETE FROM my_tab WHERE steamid ='%s'", steamid);
после завершение времени в базе timestamp. Если можно напишите пример или код
 
Сверху Снизу