GameCMS Core
Версия устарела. Новая версия по запросу google gamecms api )))Текущая версия: 3.2 от 24.03.2016 г.
Описание: загрузка аккаунтов из базы данных движка GameCMS
Возможности:- загрузка аккаунтов напрямую из базы движка (т.е без использования users.ini и базы amx_bans)
- регистрация стандартных кваров AMXmod, загрузка конифгурационных файлов карт
- вывод срока действия услуги в сторонних плагинах (например, меню ВИП или Администратора)
- уведомление игрока об отключении его услуги (с возможностью указания причины отключения)
- возможность использования "русских" ников (при использовании "ник+ пароль")
- forward для использования данной БД в других плагинах
Использование функций плагина:Пример вывода срока действия услуги в плагине menufront
1. В шапке плагина, перед первой функцией
public добавляем
Код:
native days_left_info (id, szDate[], iLen)
public plugin_natives()
set_native_filter("native_filter")
public native_filter(const name[], index, trap)
return !trap ? PLUGIN_HANDLED : PLUGIN_CONTINUE
2. В функции
displayMenu(id, pos)- ищем строку
Код:
new len = format(menuBody, charsmax(menuBody),
g_coloredMenus ? "\yAMX Mod X Menu\R%d/%d^n\w^n" : "AMX Mod X Menu %d/%d^n^n" , pos + 1, (g_menusNumber / MENUITEMSPERPAGE) + (((g_menusNumber % MENUITEMSPERPAGE) > 0) ? 1 : 0))
- заменяем ее на код
Код:
new szDate[32]
days_left_info(id, szDate, charsmax(szDate))
if (equali(szDate, "0000", 4))
format(szDate, 31, "Конца света :)")
new len = format(menuBody, 511,
g_coloredMenus ? "\yAMX Mod X Menu\R%d/%d^nДествительна до: \w%s^n^n" : "AMX Mod X Menu %d/%d^nДествительна до:: %s^n^n" , pos + 1, (g_menusNumber / MENUITEMSPERPAGE) + (((g_menusNumber % MENUITEMSPERPAGE) > 0) ? 1 : 0), szDate)
Пример использования forward в плагине GameCMS_Bonus
Код:
#include <amxmodx>
#include <sqlx>
new Handle:g_DbTuple
enum _:pl_state
{
thanks,
answers
}
new g_player[33][pl_state]
public plugin_init()
{
///
}
public init_database(Handle:sqlTuple)
{
if(g_DbTuple != Empty_Handle)
return server_print("Связь с БД GameCMS_Core уже установлена")
g_DbTuple = sqlTuple
return PLUGIN_CONTINUE
}
public client_putinserver(id)
{
new szSteamId[25], szId[1], szQuery[512];
get_user_authid(id, szSteamId, charsmax(szSteamId));
szId[0] = id;
formatex(szQuery, charsmax(szQuery), "SELECT * FROM `users` WHERE `steam_id` = '%s'", szSteamId);
SQL_ThreadQuery(g_DbTuple, "SQL_Handler", szQuery, szId, sizeof szId);
}
public SQL_Handler(failstate, Handle:query, error[], errcode, data[], datasize)
{
switch(failstate)
{
case TQUERY_CONNECT_FAILED:
{
log_amx("no connect database: %s", error);
return pause("a")
}
case TQUERY_QUERY_FAILED: return log_amx("query error: %s", error);
}
new id = data[0];
if(SQL_NumResults(query))
{
g_player[id][thanks] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "thanks"))
g_player[id][answers] = SQL_ReadResult(query, SQL_FieldNameToNum(query, "answers"))
}
server_print("Спасибок: %d / Ответов: %d", g_player[id][thanks], g_player[id][answers])
return SQL_FreeHandle(query);
}
[attachment=39559:gamecms_core.sma]
[attachment=39497:menufront.sma]
[attachment=39498:test_forward.sma]
Отредактировал: georgeml, - 20.6.2016, 17:25