new
Handle:g_hKV,
String:g_szPath[PLATFORM_MAX_PATH],
// ConVars
Handle:g_hMinInterVal = INVALID_HANDLE,
Handle:g_hMaxInterVal = INVALID_HANDLE,
Handle:g_hTimer = INVALID_HANDLE;
public OnPluginStart()
{
g_hMinInterVal = CreateConVar("sm_quiz_interval_min", "30.0");
g_hMaxInterVal = CreateConVar("sm_quiz_interval_max", "300.0");
RegAdminCmd("sm_quiz_add", Command_AddQuiz, ADMFLAG_ROOT);
RegAdminCmd("sm_quiz_reload", Command_ReloadQuiz, ADMFLAG_ROOT);
Init_g_hKV();
decl String:path[PLATFORM_MAX_PATH];
BuildPath(Path_SM, path, sizeof(path), "configs/quiz.txt");
new Handle:kv = CreateKeyValues("quiz");
if (!FileToKeyValues(kv, path) || !KvGotoFirstSubKey(kv)) SetFailState("file %s not found or broken", path);
StartTimer();
}
public Action:Command_AddQuiz(client, args)
{
if(args != 2)
{
ReplyToCommand(client, "[SM] Использоване: sm_quiz_add <вопрос> <ответ>");
return Plugin_Handled;
}
new String:sQuest[64],String:sAnswer[20];
GetCmdArg(1,sQuest,sizeof(sQuest));
GetCmdArg(2,sAnswer,sizeof(sAnswer));
KvRewind(g_hKV);
KvJumpToKey(g_hKV, sQuest, true);
{
KvSetString(g_hKV, "question", sQuest);
KvSetNum(g_hKV, "answer", sAnswer);
}
ReplyToCommand(client, "Вопрос успешно добавлен.Вопрос: '%s'. Ответ: '%s'.",sQuest,sAnswer);
KvRewind(g_hKV);
KeyValuesToFile(g_hKV, g_szPath);
Init_g_hKV();
return Plugin_Handled;
}
public Action:QuizTimer(Handle:timer)
{
StartTimer()
}
public Action:Command_ReloadQuiz(client, args) Init_g_hKV();
StartTimer()
{
if(g_hTimer == INVALID_HANDLE)
{
g_hTimer = CreateTimer(GetRandomFloat(GetConVarFloat(g_hMinInterVal), GetConVarFloat(g_hMaxInterVal)), QuizTimer);
}
else
{
KillTimer(g_hTimer);
g_hTimer = CreateTimer(GetRandomFloat(GetConVarFloat(g_hMinInterVal), GetConVarFloat(g_hMaxInterVal)), QuizTimer);
}
}
Init_g_hKV()
{
g_hKV = CreateKeyValues("quiz");
BuildPath(Path_SM, g_szPath, sizeof(g_szPath) - 1, "configs/quiz.txt");
if(!FileToKeyValues(g_hKV, g_szPath))
{
LogError("Файл '%s' не найден!", g_szPath);
SetFailState("Файл '%s' не найден!", g_szPath);
CloseHandle(g_hKV);
return;
}
}