Иконка ресурса

[Личный Кабинет] Ядро + Модули 4.0.2 [FIX 1.0]

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
Это один и тот же плагин, написанный на разном синтаксисе.
 

Barkelay

Участник
Сообщения
520
Реакции
61
Это один и тот же плагин, написанный на разном синтаксисе.
Уже понял, просто плагины конфликтовали, забыл выгрузить другой
Сообщения автоматически склеены:

Сделал сайт
А как теперь сделать чтобы в личном кабине появилась кнопка "Пополнить счёт"?
Сообщения автоматически склеены:

Не получается купить админку почему-то
Ошибка: L 10/13/2019 - 21:55:07: [lk\lk_module_pokupka_admin.smx] SQL_Callback_InsertPlayer: Unknown column 'expired' in 'field list'
C-подобный:
#pragma semicolon 1
#include <lk>
#include <sourcemod>

enum enum_AGroups
{
    String:NameGroup[64],
    _:Price,
    _:Days,
    String:SrvGroup[64],
    _:Gid,
    _:Group_ID,
    _:Srv_Group_ID,
    String:Server_ID[64],
}

Database g_hDatabase;
KeyValues kfg;
int g_iAGroupsCount, g_AGroups[32][enum_AGroups], iClientSelect[MAXPLAYERS+1], g_iAdmins_AID[MAXPLAYERS+1];
char g_sItemName[] = "pokupka_admin";
char steamid[MAXPLAYERS + 1][32], cfg_sDefault_Password[128], cfg_sKickMessage[128];
bool cfg_bKick_buy;

public Plugin myinfo =
{
    name = "[LK MODULE] Покупка Админок (REFORK)",
    author = "1mpulse (skype:potapovdima1)",
    version = "4.0.0"
};

public void LK_OnLoaded()
{
    if(LK_GetVersion() < 400) LogError("[LK MODULE][Покупка Админок (REFORK)] Обновите ядро до последней версии");
    else
    {
        LoadTranslations("lk_module_pokupka_admin.phrases");
        Database.Connect(ConnectCallBack, "sourcebans");
        LK_RegisterItem(g_sItemName, BuyADMIN_Callback);
    }
}

public void OnPluginEnd()
{
    LK_UnRegisterItem(g_sItemName);
}

public void ConnectCallBack(Database hDatabase, const char[] sError, any data)
{
    if (hDatabase == null)
    {
        SetFailState("Database failure: %s", sError);
        return;
    }
    g_hDatabase = hDatabase;
    g_hDatabase.SetCharset("utf8");
}

public void OnMapStart()
{
    KFG_load();
}

public void OnClientPutInServer(iClient)
{
    GetClientAuthId(iClient, AuthId_Steam2, steamid[iClient], 32, true);
    iClientSelect[iClient] = -1;
}

public void BuyADMIN_Callback(int iClient, int ItemID, const char[] ItemName)
{
    ShowMenuModule(iClient);
}

void ShowMenuModule(int iClient)
{
    int ClientCash = LK_GetClientCash(iClient);
    char sTitle[256];
    Menu hMenu = new Menu(MenuHandler_MainMenu);
    hMenu.ExitBackButton = true;
    LK_GetMainMenuTitle(iClient, sTitle, sizeof(sTitle));
    hMenu.SetTitle(sTitle);
    for(int i = 0; i <= g_iAGroupsCount; i++)
    {
        char sText[128], sI[16];
        IntToString(i, sI, 16);
        if(g_AGroups[i][Days] == 0) FormatEx(sText, 128, "%s Навсегда [%i руб.]", g_AGroups[i][NameGroup], g_AGroups[i][Price]);
        else FormatEx(sText, 128, "%s [%i дней] [%i руб.]", g_AGroups[i][NameGroup], g_AGroups[i][Days], g_AGroups[i][Price]);
        hMenu.AddItem(sI, sText, ClientCash >= g_AGroups[i][Price] ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
    }
    hMenu.Display(iClient, 0);
}

public int MenuHandler_MainMenu(Menu hMenu, MenuAction action, int iClient, int iItem)
{
    switch(action)
    {
        case MenuAction_End: delete hMenu;
        case MenuAction_Cancel:
        {
            if(iItem == MenuCancel_ExitBack) LK_ShowMainMenu(iClient);
        }
        case MenuAction_Select:
        {
            char szInfo[16];
            hMenu.GetItem(iItem, szInfo, 16);
            int j = StringToInt(szInfo);
            iClientSelect[iClient] = j;
            if(GetUserFlagBits(iClient) & ADMFLAG_GENERIC) LK_PrintToChat(iClient, "%t", "Now_Admin");
            else
            {
                char szQuery[256];
                FormatEx(szQuery, sizeof(szQuery), "SELECT aid FROM sb_admins WHERE authid = '%s'", steamid[iClient]);
                g_hDatabase.Query(SQL_Callback_LoadPlayer, szQuery, GetClientUserId(iClient));
            }
        }
    }
}

InsertPlayerInDB(iClient)
{
    char szQuery[256], szName[MAX_NAME_LENGTH*2+1];
    int iTime;
    int NowTime = GetTime();
    int DaysSeconds = g_AGroups[iClientSelect[iClient]][Days]*86400;
    if(DaysSeconds == 0) iTime = 0;
    else iTime = NowTime+DaysSeconds;
    if(IsClientInGame(iClient) && !IsFakeClient(iClient))
    {
        GetClientName(iClient, szQuery, MAX_NAME_LENGTH);
        g_hDatabase.Escape(szQuery, szName, sizeof(szName));
        FormatEx(szQuery, sizeof(szQuery), "INSERT INTO sb_admins (user, authid, password, gid, srv_group, expired, email) VALUES ('%s', '%s', '%s', '%i', '%s', '%i', '1@1.ru')", szName, steamid[iClient], cfg_sDefault_Password, g_AGroups[iClientSelect[iClient]][Gid], g_AGroups[iClientSelect[iClient]][SrvGroup], iTime);
        g_hDatabase.Query(SQL_Callback_InsertPlayer, szQuery, GetClientUserId(iClient));
    }
}

public void SQL_Callback_LoadPlayer(Database hDatabase, DBResultSet hResults, const char[] sError, any iUserID)
{
    if(sError[0])
    {
        LogError("SQL_Callback_LoadPlayer: %s", sError);
        return;
    }
   
    int iClient = GetClientOfUserId(iUserID);
    if(iClient)
    {
        int count;
        while (hResults.FetchRow())
        {  
            g_iAdmins_AID[iClient] = hResults.FetchInt(0);
            count++;
        }
        if(count) LK_PrintToChat(iClient, "%t", "Now_Admin_Servers");
        else InsertPlayerInDB(iClient);
    }
}

public void SQL_Callback_GetAidPlayer(Database hDatabase, DBResultSet hResults, const char[] sError, any iUserID)
{
    if(sError[0])
    {
        LogError("SQL_Callback_GetAidPlayer: %s", sError);
        return;
    }
   
    int iClient = GetClientOfUserId(iUserID);
    while(hResults.FetchRow()) g_iAdmins_AID[iClient] = hResults.FetchInt(0);
    if(iClient)
    {
        char ui[32][32], szQuery[256];
        int jl = ExplodeString(g_AGroups[iClientSelect[iClient]][Server_ID], ";", ui, 32, 32, false);
        for(int i = 0; i < jl; i++)
        {
            int server_new_id = StringToInt(ui[i]);
            FormatEx(szQuery, sizeof(szQuery), "INSERT INTO sb_admins_servers_groups (admin_id, group_id, srv_group_id, server_id) VALUES ('%i', '%i', '%i', '%i')", g_iAdmins_AID[iClient], g_AGroups[iClientSelect[iClient]][Group_ID], g_AGroups[iClientSelect[iClient]][Srv_Group_ID], server_new_id);
            g_hDatabase.Query(SQL_Callback_Default, szQuery, GetClientUserId(iClient));
        }
        LK_TakeClientCash(iClient, g_AGroups[iClientSelect[iClient]][Price]);
        if(g_AGroups[iClientSelect[iClient]][Days] == 0)
        {
            LK_PrintToChat(iClient, "%t", "Buy_Admin_Forever");
            LK_LogMessage("[Личный кабинет] Игрок %N (%s) купил %s навсегда", iClient, steamid[iClient], g_AGroups[iClientSelect[iClient]][NameGroup]);
        }
        else
        {
            LK_PrintToChat(iClient, "%t", "Buy_Admin", g_AGroups[iClientSelect[iClient]][Days]);
            LK_LogMessage("[Личный кабинет] Игрок %N (%s) купил %s на %i дней", iClient, steamid[iClient], g_AGroups[iClientSelect[iClient]][NameGroup], g_AGroups[iClientSelect[iClient]][Days]);
        }
        ServerCommand("ma_reload");
        ServerCommand("sm_rehash");
        ServerCommand("sm_reloadadmins");
        ServerCommand("ma_wb_rehashadm");
        if(cfg_bKick_buy) KickClient(iClient, cfg_sKickMessage);
        else LK_PrintToChat(iClient, "%t", "Buy_End");
    }
}

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

public void SQL_Callback_InsertPlayer(Database hDatabase, DBResultSet hResults, const char[] sError, any iUserID)
{
    if(sError[0])
    {
        LogError("SQL_Callback_InsertPlayer: %s", sError);
        return;
    }
   
    int iClient = GetClientOfUserId(iUserID);
    if(iClient)
    {  
        char szQuery[256];
        FormatEx(szQuery, sizeof(szQuery), "SELECT aid FROM sb_admins WHERE authid = '%s'", steamid[iClient]);
        g_hDatabase.Query(SQL_Callback_GetAidPlayer, szQuery, GetClientUserId(iClient));
    }
}

KFG_load()
{
    if(kfg) delete kfg;
    kfg = new KeyValues("LK_MODULE");
    char path[128], g[64];
    BuildPath(Path_SM, path, 128, "configs/lk/lk_module_pokupka_admin.ini");
    if(!kfg.ImportFromFile(path)) SetFailState("[LK MODULE][Покупка Админки] - Файл конфигураций не найден");
    else
    {
        kfg.Rewind();
        if(kfg.JumpToKey("pokupka_admin", false))
        {
            cfg_bKick_buy = kfg.GetNum("kick_after", 1)?true:false;
            kfg.GetString("kick_message", cfg_sKickMessage, 128);
            kfg.GetString("default_password", cfg_sDefault_Password, 128);
            if(kfg.JumpToKey("admins_group", false))
            {
                if(kfg.GotoFirstSubKey(true))
                {
                    g_iAGroupsCount = -1;
                    do
                    {
                        if(kfg.GetSectionName(g, 64))
                        {
                            g_iAGroupsCount += 1;
                            strcopy(g_AGroups[g_iAGroupsCount][NameGroup], 64, g);
                            g_AGroups[g_iAGroupsCount][Price] = kfg.GetNum("price");
                            g_AGroups[g_iAGroupsCount][Days] = kfg.GetNum("days");
                            kfg.GetString("srv_group", g_AGroups[g_iAGroupsCount][SrvGroup], 64);
                            g_AGroups[g_iAGroupsCount][Gid] = kfg.GetNum("gid");
                            g_AGroups[g_iAGroupsCount][Group_ID] = kfg.GetNum("group_id");
                            g_AGroups[g_iAGroupsCount][Srv_Group_ID] = kfg.GetNum("srv_group_id");
                            kfg.GetString("server_id", g_AGroups[g_iAGroupsCount][Server_ID], 64);
                        }
                    } while (kfg.GotoNextKey(true));
                }
            }
        }
    }
}
//ЕСЛИ НЕ МОЖЕТЕ НАСТРОИТЬ, ТО ПИШИТЕ В КОНФУ, В СКАЙПЕ. я помогу
"LK_MODULE"
{
"pokupka_admin"
{
//Кикать игрока после покупки админки? (1 - Включить/0 - Отключить)
//Админка появляется либо после смены карты, либо если перезайти на сервер
//Если кикать игрока выключено, то игроку будет сообщение в чат, с просьбой перезайти на сервер или ждать смены карты
"kick_after" "1"

//Если "kick_after" равен 1
"kick_message" "Админка активирована. Перезайди на сервер"

"default_password" "db569872088b145628c664266874cd9909477abb"//пароль: admin12354 // пароль уже захэширован, лучше не менять это, если не знаете что это
//Игроку рекомендуем после покупки авторизоваться на сайте и изменить(заполнить) данные.

"admins_group"
{
"Админ" //Название группы, будет отображатсья в меню. Добавлять можно несколько групп
{
"price" "600" //Цена в руб.
"days" "0" //Дни доступа, 0 - Навсегда
"srv_group" "Админ" //название группы
"gid" "-1" //id - Группы прав, -1 если отсутствует
"group_id" "3" //id - серверной группы админа, -1 если отсутствует
"srv_group_id" "-1" //id - Группы серверов на которые распостраняется права, -1 если отсутствует
"server_id" "1" //id - сервера на которые распостраняется права, можно задать несколько разделять через ;
}
}
}
}
С VIP всё в порядке, покупает без проблем
 
Последнее редактирование:

Steammer

Участник
Сообщения
443
Реакции
187
Не обновляется список администраторов после покупки, хоть и команда на сервер идет, в итоге после покупки нужно ждать смену карты.
 

Barkelay

Участник
Сообщения
520
Реакции
61
Не обновляется список администраторов после покупки, хоть и команда на сервер идет, в итоге после покупки нужно ждать смену карты.
Только что сам с этой ерундой мучался и нашёл способ, что админка выдаётся мгновенно, как только купил
В конфиге плагина значения поменяй на свои
В config.cfg от MA сделай "AdminUpdateCache" "1"
Держи 😉
 

Вложения

  • lk_module_pokupka_admin.zip
    17.1 КБ · Просмотры: 95

Barkelay

Участник
Сообщения
520
Реакции
61
Добавил бы кто описание модулей, их там 20+ штук всё таки
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Почему бы не GameCMS, он же все таки free
 

September

Участник
Сообщения
5,238
Реакции
2,742
Он взломан и в свободном доступе со всеми модулями буквально
У любого ПО есть кряки, но это не значит, что они бесплатные.

а пропагандировать пиратское ПО на нашем форуме лучше не стоит :)
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
И что? Это делает его бесплатным теперь?
 

Barkelay

Участник
Сообщения
520
Реакции
61
Подскажите пожалуйста модуль "Пополнить счёт", как он называется?
 

[GoodMan]

Участник
Сообщения
9
Реакции
2
Не подскажите ещё пожалуйста, что за ошибка?
Это только с плагином "lk_module_pokupka_vip_r1ko_new-style.smx"
C этим плагином такой ошибки нет "lk_module_pokupka_vip_r1ko.smx"
L 10/13/2019 - 16:36:14: [lk\lk_core.smx] LK_RegisterItem ошибка: Ключ 'pokupka_vip_r1ko' уже занят
L 10/13/2019 - 16:39:11: [lk\lk_core.smx] LK_RegisterItem ошибка: Ключ 'pokupka_vip_r1ko' уже занят
L 10/13/2019 - 16:39:13: [lk\lk_core.smx] LK_RegisterItem ошибка: Ключ 'pokupka_vip_r1ko' уже занят
L 10/13/2019 - 16:39:14: [lk\lk_core.smx] LK_RegisterItem ошибка: Ключ 'pokupka_vip_r1ko' уже занят
L 10/13/2019 - 16:39:41: [lk\lk_core.smx] LK_RegisterItem ошибка: Ключ 'pokupka_vip_r1ko' уже занят
L 10/13/2019 - 16:39:47: [lk\lk_core.smx] LK_RegisterItem ошибка: Ключ 'pokupka_vip_r1ko' уже занят
L 10/13/2019 - 16:39:49: [lk\lk_core.smx] LK_RegisterItem ошибка: Ключ 'pokupka_vip_r1ko' уже занят
L 10/13/2019 - 16:39:55: [lk\lk_core.smx] LK_RegisterItem ошибка: Ключ 'pokupka_vip_r1ko' уже занят
Так ты убери один из них, а то ты пытаешься включить сразу 2 плагина, вот и выводит что ключ уже занят. Пиши в ЛС помогу, если нужно!
Сообщения автоматически склеены:

Видел у кого-то на сервере, но не помню у кого, поэтому не могу спросить
Это просто информация в лк!
 

Мировой

Участник
Сообщения
342
Реакции
53

Вложения

  • 5VyLPYc_xgo.jpg
    5VyLPYc_xgo.jpg
    70.8 КБ · Просмотры: 59

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
в sb админ есть а админка включиться после смены карты
Потому что СБ делает рехеш админов после смены карты и перезапуска сервера, я так думаю. Либо вручную отправлять ркон команду на sb_rehashadm или как у вас
 
Сверху Снизу