[CS: GO] Конкурс (розыгрыши/викторина)

Статус
В этой теме нельзя размещать новые ответы.

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Требуется скриптер который напишет плагин конкурс(розыгрыши/викторина).

ТЗ:
Чат: (ну или можно в худе)

Задача: 4+4 = ?
Игрок отвечает в чат: 8
Игрок N ответил на задачу и получил N чего то там.

Если никто не отвечает, плагин пишет:
Никто не ответил на задачу. Ответ был: 8 Следующая задача через N время.

В Txt файле вписываешь свой пример и ответ.
"4 + 4 "="8"
"Главный администратор сервера ?"="Psychologist21"

И т.д.
 
Последнее редактирование:

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Файлик через kv можно реализовать, чат ловить можно через OnClientSayCommand.
Ничего сложного ведь)
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Ну естественно рандом , желателен.
Хотя если даже его не будет, то ничего в этом страшного нету))
Можно куча вопросов с ответами замутить в txt файл.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #7
У меня есть плагин, генерирует случайные примеры заданой сложности. Есть степени, +-*/, настройка количества кредитов, призовых мест и т.д.
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
У меня есть плагин, генерирует случайные примеры заданой сложности. Есть степени, +-*/, настройка количества кредитов, призовых мест и т.д.
Если Danyas не сделает, поинтересуюсь у тебя...
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
В каждой теме спорят ^^ :biggrin:
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Только приехал.
Да не, серьёзно на дачу ездил)

На счет лени - да, ужос просто.
Пока что готово почти ничего :D
PHP:
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;
    }
}
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Для приза(за правильный ответ) можно выдачу кредитов сделать. (shop 2.1.0)

Думаю плагином многие буду пользоваться...
от души душевно в душу для души душевной от души
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #18
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);
}
}
а зачем повторять код если можно сделать так:
PHP:
StartTimer()
{
    if(g_hTimer == INVALID_HANDLE)
    {
        KillTimer(g_hTimer);
}
g_hTimer = CreateTimer(GetRandomFloat(GetConVarFloat(g_hMinInterVal), GetConVarFloat(g_hMaxInterVal)), QuizTimer);
}
--- Добавлено позже ---
Init_g_hKV()
{
g_hKV = CreateKeyValues("quiz");
перед этим кв не закрывается -> утечка
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #19
Оффтоп
сдвигает все значения вверх на 1 индекс.
Было:
PHP:
Индекс - Значение
0 - 5
1 - 7
2 - 1
3 - 8
4 - 9

После ShiftArrayUp(hArray, 2) стало:
PHP:
Индекс - Значение
0 - 5
1 - 7
2 - не определено
3 - 1
4 - 8
5 - 9
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
А не лучше сделать как у этого паренька в запросе? тык
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу