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

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

  1. msl1

    msl1

    Сообщения:
    85
    Симпатии:
    4
    Птивет всем . Помогите дописать плагин

    #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. Если можно напишите пример или код