• Пожалуйста, создайте название темы отражающее ее смысл
  • Для ускорения решения Вашего вопроса заполните обязательные поля и подробно опишите возникшую проблему

Помощь GameCMS VipTest помощь

serega31

Пользователь
Сообщения
1
Реакции
0
Баллы
1
Приветствую всех. Возник вопрос, можно как то реализовать, чтобы если стоит запрет на тест, без регистрации на сайте, сделать проверку регистрации не по steamid, а по нику, что он просто зарегистрировался?
Добавлено:

Извиняюсь, что исходник не в спойлере, не могу уже изменить
 
Исходный код
/*
to do

3.8.1
+ добавлен квар для указания номера услуги вип-теста, которая создана на сайте

*/

#include <amxmodx>
#include <amxmisc>
#include <sqlx>
#include <gamecms5>

new const PLUGIN[] = "GameCMS_VipTest"
new const VERSION[] = "3.8.1"
new const AUTHOR[] = "zhorzh78"

enum _:eCvars
{
TABLE,
FLAGS,
TIME,
CMD,
MENUCMD,
ANONS,
CREATE_TBL,
REGONLY,
DELETETIME,
SERVICE_ID
};

new cpCvars[eCvars], g_iServerId, g_iVipTime;
new g_szQuery[MAX_QUERY_SMALL_LEN * 2], g_szTestTableName[MAX_STRING_LEN], g_szAdminsTableName[MAX_STRING_LEN], g_szTargetSteamId[MAX_STRING_LEN];
new g_szInsertTime[MAX_STRING_LEN], g_szVipFlags[MAX_STRING_LEN], g_szMenuCmd[MAX_STRING_LEN], cvCmd[MAX_STRING_LEN];
new bool:g_bTestOK[MAX_PLAYERS + 1], g_bitVipFlags;
new Handle:g_hSqlTupple;

public OnAPIPluginStop()
{
Plugin_Stop(2);
}

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_dictionary("gamecms_viptest.txt");

register_cvar("gamecms_viptest", VERSION, FCVAR_SERVER|FCVAR_UNLOGGED);
cpCvars
= register_cvar("cms_viptest_table", "vip_test");
cpCvars[FLAGS] = register_cvar("cms_viptest_flags", "pt");
cpCvars[TIME] = register_cvar("cms_viptest_time", "48");
cpCvars[MENUCMD] = register_cvar("cms_viptest_menucmd", "/vipmenu");
cpCvars[CMD] = register_cvar("cms_viptest_cmd", "/viptest");
cpCvars[CREATE_TBL] = register_cvar("cms_viptest_create_table", "1");
cpCvars[ANONS] = register_cvar("cms_viptest_anonstime", "300");
cpCvars[REGONLY] = register_cvar("cms_viptest_regonly", "0");
cpCvars[DELETETIME] = register_cvar("cms_viptest_delete_player", "0");
cpCvars[SERVICE_ID] = register_cvar("cms_viptest_service_id", "0");

new configsFile[MAX_STRING_LEN * 2], configsDir[MAX_STRING_LEN];
get_configsdir(configsDir, charsmax(configsDir));
formatex(configsFile, charsmax(configsFile), "%s/gamecms/viptest.cfg", configsDir);

if(!file_exists(configsFile))
{
Plugin_Stop(3);
return;
}

server_cmd("exec %s", configsFile);
server_exec();

get_pcvar_string(cpCvars[CMD], cvCmd, charsmax(cvCmd));
formatex(configsFile, charsmax(configsFile), "say %s", cvCmd);
register_clcmd(configsFile, "AddVipQuery");
}

public OnConfigsExecuted()
{
if(is_plugin_loaded("GameCMS_API") == INVALID_PLUGIN_ID)
Plugin_Stop(1);
}

Plugin_Stop(err)
{
switch(err)
{
case 1: log_amx("Plugin paused. GameCMS_API plugin was not found");
case 2: log_amx("Plugin paused. Server was not found in Database");
case 3: log_amx("Plugin paused. File gamecms/viptest.cfg was not found");
}

pause("d");
}

public OnAPIPluginLoaded(Handle:sqlTuple, version[], serverID)
{
if(!(g_iServerId = serverID))
{
Plugin_Stop(2);
return;
}

g_hSqlTupple = sqlTuple;

get_cvar_string("cms_url", SiteUrl, charsmax(SiteUrl));
get_pcvar_string(cpCvars
, g_szTestTableName, charsmax(g_szTestTableName));
get_pcvar_string(cpCvars[FLAGS], g_szVipFlags, charsmax(g_szVipFlags));
get_pcvar_string(cpCvars[MENUCMD], g_szMenuCmd, charsmax(g_szMenuCmd));
cmsapi_get_table_name(admins_services, g_szAdminsTableName, charsmax(g_szAdminsTableName));
g_iVipTime = get_pcvar_num(cpCvars[TIME]);
g_bitVipFlags = read_flags(g_szVipFlags);

new Float:flAnonsTime = get_pcvar_float(cpCvars[ANONS]);
if(flAnonsTime != 0)
set_task(flAnonsTime, "TaskAnons",.flags="b");

new iLen;
if(get_pcvar_num(cpCvars[CREATE_TBL]))
iLen += formatex(g_szQuery[iLen], charsmax(g_szQuery) - iLen,
"CREATE TABLE IF NOT EXISTS `%s` (`hash` varchar(33) NOT NULL, `steamid` varchar(32) NOT NULL,\
`servid` int(12) NOT NULL, `date` INT(12) NOT NULL, UNIQUE (`hash`));", g_szTestTableName);

new iTime = get_pcvar_num(cpCvars[DELETETIME]);
if(iTime)
iLen += formatex(g_szQuery[iLen], charsmax(g_szQuery) - iLen,
"DELETE FROM `%s` WHERE UNIX_TIMESTAMP(NOW()) > (`date` + %d*24*60*60);", g_szTestTableName, iTime);

if(!iLen)
return;
new szData[2];
szData[0] = LOAD_ALL;
SQL_ThreadQuery(g_hSqlTupple, "SQLQuery_post", g_szQuery, szData, sizeof(szData));
}


public client_connect(id)
{
g_bTestOK[id] = false;
}


public TaskAnons()
{
for(new i = 1; i <= MaxClients; i++)
{
if(!is_user_connected(i))
continue;

if(g_bTestOK || (get_user_flags(i) & g_bitVipFlags) == g_bitVipFlags)
continue;

client_print_color(i, 0, "%L", LANG_PLAYER, "CMS_VIP_TEST_ANONS", cvCmd);
}
}


public AddVipQuery(id)
{
if(!g_hSqlTupple)
{
client_print_color(id, 0, "^3[Oops..] Something wrong");
return;
}

if((get_user_flags(id) & g_bitVipFlags) == g_bitVipFlags)
{
client_print_color(id, 0, "%L", LANG_PLAYER, "CMS_VIP_TEST_HASVIP");
return;
}

if(g_bTestOK[id])
{
client_print_color(id, 0, "%L", LANG_PLAYER, "CMS_VIP_TEST_WASVIP");
return;
}

new iMemberId = cmsapi_is_user_member(id);
if(get_pcvar_num(cpCvars[REGONLY]))
{
if(!iMemberId)
{
client_print_color(id, 0, "%L", LANG_PLAYER, "CMS_VIP_TEST_REGONLY", SiteUrl);
return;
}
}

get_user_authid(id, g_szTargetSteamId, charsmax(g_szTargetSteamId));
format_time(g_szInsertTime, charsmax(g_szInsertTime), "%Y-%m-%d %H:%M:%S", (get_systime() + (g_iVipTime * 60 * 60)));

new iLen;

iLen += formatex(g_szQuery[iLen], charsmax(g_szQuery) - iLen, "INSERT INTO %s (hash, steamid, servid, date) values (MD5('%s%d'),'%s','%d', '%d');",
g_szTestTableName, g_szTargetSteamId, g_iServerId, g_szTargetSteamId, g_iServerId, get_systime());

iLen += formatex(g_szQuery[iLen], charsmax(g_szQuery) - iLen,
"INSERT IGNORE INTO admins (name, type, server, user_id) values ('%s', 'ce', '%d', '%d');\
INSERT INTO %s (rights_und, service_time, ending_date, admin_id, service) values ('%s', '%d', '%s', LAST_INSERT_ID(), '%d');",
g_szTargetSteamId, g_iServerId, iMemberId, g_szAdminsTableName, g_szVipFlags, g_iVipTime / 24, g_szInsertTime, get_pcvar_num(cpCvars[SERVICE_ID]));

new szData[2];
szData[0] = id;

SQL_ThreadQuery(g_hSqlTupple, "SQLQuery_post", g_szQuery, szData, sizeof(szData));
}

public SQLQuery_post(failstate, Handle:query, const error[], errornum, const postData[], DataSize)
{
new id = postData[0];
if(!IsValidPlayer(id))
return;

if(SQL_Error(error, errornum, failstate))
{
if(errornum == DUPLICATE_ENTRY)
{
g_bTestOK[id] = true;
client_print_color(id, 0, "%L", LANG_PLAYER, "CMS_VIP_TEST_WASVIP");
return;
}

client_print_color(id, 0, "^3[Oops..] Something wrong");
return;
}

new tmpData[AdminInfo];
tmpData[AdminId] = SQL_GetInsertId(query);
tmpData[AdminAuthId] = g_szTargetSteamId; //auth
tmpData[AdminServiceFlags] = g_szVipFlags; //flags
tmpData[AdminType] = "ce"; //type
tmpData[AdminExpired] = g_szInsertTime; //expired
tmpData[AdminServiceName] = "Vip Test"; //service_name
tmpData[AdminServiceTime] = g_iVipTime / 24;//service_time
tmpData[AdminActive] = g_iVipTime *60 * 60; //active

if(ArrayPushArray(cmsapi_get_all_services(), tmpData) != -1)
{
client_print_color(id, 0, "%L", LANG_PLAYER, "CMS_VIP_TEST_GETVIP", g_szInsertTime, g_szMenuCmd);
cmsapi_reaccess_admin(id);
}
else
client_print_color(id, 0, "^3[Oops..] Something wrong");
}
Назад
Сверху