Простая система голосования через чат

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Идея и назначение

Администратор может запустить голосование с двумя вариантами ответа.

Игроки голосуют командами, а по завершении показывается результат.


Суть реализации

1. Храним текст вопроса и два варианта.

2. Храним количество голосов за каждый вариант.

3. Добавляем команды запуска и голосования.


Реализация

Код:
new VoteActive;
new VoteYes;
new VoteNo;
new VoteQuestion[64];


CMD:startvote(playerid, params[])
{
    if(VoteActive)
        return SendClientMessage(playerid, -1, "Голосование уже активно.");

    new text[64];

    if(sscanf(params, "s[64]", text))
        return SendClientMessage(playerid, -1, "Используй: /startvote [вопрос].");

    format(VoteQuestion, sizeof VoteQuestion, "%s", text);
    VoteYes = 0;
    VoteNo = 0;
    VoteActive = 1;

    SendClientMessageToAll(-1, "Запущено голосование, голосуй /yes или /no.");

    return 1;
}


CMD:yes(playerid)
{
    if(!VoteActive)
        return SendClientMessage(playerid, -1, "Нет активного голосования.");

    VoteYes++;
    SendClientMessage(playerid, -1, "Ты проголосовал ЗА.");

    return 1;
}


CMD:no(playerid)
{
    if(!VoteActive)
        return SendClientMessage(playerid, -1, "Нет активного голосования.");

    VoteNo++;
    SendClientMessage(playerid, -1, "Ты проголосовал ПРОТИВ.");

    return 1;
}


CMD:endvote(playerid)
{
    if(!VoteActive)
        return SendClientMessage(playerid, -1, "Нет активного голосования.");

    new msg[96];

    format(msg, sizeof msg, "Результат голосования: %s | За: %d, против: %d.", VoteQuestion, VoteYes, VoteNo);
    SendClientMessageToAll(-1, msg);

    VoteActive = 0;

    return 1;
}


Дополнительные идеи

1. Запрещать повторное голосование.

2. Ограничивать время голосования таймером.

3. Хранить историю голосований.
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху