Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

[CMD] Выборы Мэра Без Форума.

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

Pelekan

Начинающий
Пользователь
Регистрация
19 Мар 2013
Сообщения
51
Лучшие ответы
0
Репутация
14
Здравствуйте, вот понадобилось мне тут мэра выбрать. Решил все сделать по РП, написал не большую систему.
Сначала нужно добавить две команды в public OnPlayerCommandText
PHP:
if(strcmp(cmd, "/vote", true) == 0) // Команда выбора мэра, лучше сразу не говорить про нее, а подождать, пока будут кандидаты
        {
                if(IsPlayerConnected(playerid))
                {
                        if(PlayerToPoint(50, playerid, 362.3129,173.7937,1008.3828))// Проверяем, в мэрии ли игрок
                        {
                                Voting(playerid); //Всовываем ему меню выбора мэра.
                        }
                        else
                        {
                        SendClientMessage(playerid, COLOR_GRAD2, "Вы не в здании Мэрии!"); // Если он не в мэрии, ругаемся на него
                        }
                        return 1;
                }
        }
        if(strcmp(cmd, "/registration", true) == 0) // Выдвинуть свою кандидатуру на пост мэра.
        {
                if(IsPlayerConnected(playerid))
        {
                        if(PlayerToPoint(50, playerid, 362.3129,173.7937,1008.3828)) // В мэрии ли игрок
                        {
                                RegistrationPlayer(playerid); // Регистрируем его кандидатуту
                                SendClientMessage(playerid, COLOR_BLUE, "Вы выдвинули свою кандидатуру!"); // Оповещаем его об этом
                        }
                        else
                        {
                        SendClientMessage(playerid, COLOR_GRAD2, "Вы не в здании Мэрии!"); // Ругаемся за то, что он не в мэрии.
                        }
                        return 1;
                }
        }
Теперь добавить ко всем new:
PHP:
new Mayor_Nick_1, Mayor_Nick_2, Mayor_Nick_3, Mayor_Nick_4, Mayor_Nick_5, Mayor_Nick_6, Mayor_Nick_7;
С этим разобрались. Далее нужно добавить несколько функций в самый конец мода.

PHP:
stock Voting(playerid) // Меню выбора мэра
{
        if(PlayerInfo[playerid][pLevel] >= 2) // Против подтасовки. Если игрок только что зарегистрировался, голосовать не может
        {
                if(PlayerInfo[playerid][pVote] == 0) // Если не голосовал, продолжаем
                {
                        ShowPlayerDialog(playerid, 16545, DIALOG_STYLE_LIST, "Выборы", " Ник мэра 1\n Ник мэра 2\n Ник мэра 3\n Ник мэра 4\n Ник мэра 5\n Ник мэра 6\n Ник мэра 7", "Выбор", "Отмена"); // Диалог голосования
                        PlayerInfo[playerid][pVote] = 1; // Думаю, это понятно
                        SendClientMessage(playerid, COLOR_BLUE, "Вы проголосовали за кандидата.");
                }
                else
                {
                    SendClientMessage(playerid, COLOR_BLUE, "Вы уже голосовали!"); // Ругаемся на то, что он голосовал
                }
        }
        else
        {
            SendClientMessage(playerid, COLOR_RED, "Головать можно с 2х лет в штате!"); // Если еще малой, посылаем его
        }
}
PHP:
stock VoteUpdate() // Запись голосов в файл
{
    new coordsstring[MAX_PLAYER_NAME];
    format(coordsstring, sizeof(coordsstring), "%d|%d|%d|%d|%d|%d|%d", Mayor_Nick_1, Mayor_Nick_2, Mayor_Nick_3, Mayor_Nick_4, Mayor_Nick_5, Mayor_Nick_6, Mayor_Nick_7);
    new File: file2 = fopen("logs/votemayors.cfg", io_write);
    fwrite(file2, coordsstring);
    fclose(file2);
}
PHP:
stock VoteLoad() // Выставляем кол-во голосов в переменные после рестарта
{
        new arrCoords[19][256];
        new strFromFile2[256];
        new File: file = fopen("logs/votemayors.cfg", io_read);
        if (file)
        {
                fread(file, strFromFile2);
                split(strFromFile2, arrCoords, '|');
                Mayor_Nick_1= strval(arrCoords[0]);
                Mayor_Nick_2= strval(arrCoords[1]);
                Mayor_Nick_3= strval(arrCoords[2]);
                Mayor_Nick_4= strval(arrCoords[3]);
                Mayor_Nick_5= strval(arrCoords[4]);
                Mayor_Nick_6= strval(arrCoords[5]);
                Mayor_Nick_7= strval(arrCoords[6]);
                printf("Mayors Load");
                fclose(file);
        }
}
PHP:
stock RegistrationPlayer(playerid) // Регистрируем кандидатуру после команды /registration
{
        new Mayor[MAX_PLAYER_NAME];
    new coordsstring[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Mayor, sizeof(Mayor));
    format(coordsstring, sizeof(coordsstring), "%s\n", Mayor);
    new File: file2 = fopen("logs/mayors.cfg", io_append); // Открываем файл для до записи файла
    fwrite(file2, coordsstring);
    fclose(file2);
}
Теперь нужно добавить диалоговое окно:
PHP:
if(dialogid == 16545) // Выборы мэра
        {
            if(response)
                {
                    if(listitem == 0)
                    {
                Mayor_Nick_1 += 1;
                VoteUpdate();
                    }
                    if(listitem == 1)
                    {
                        Mayor_Nick_2 += 1;
                        VoteUpdate();
                    }
                    if(listitem == 2)
                    {
                        Mayor_Nick_3 += 1;
                        VoteUpdate();
                    }
                    if(listitem == 3)
                    {
                        Mayor_Nick_4 += 1;
                        VoteUpdate();
                    }
                    if(listitem == 4)
                    {
                        Mayor_Nick_5 += 1;
                        VoteUpdate();
                    }
                    if(listitem == 5)
                    {
                        Mayor_Nick_6 += 1;
                        VoteUpdate();
                    }
                    if(listitem == 6)
                    {
                        Mayor_Nick_7 += 1;
                        VoteUpdate();
                    }
                }
        }
Теперь добавим переменную в enum pInfo
PHP:
enum pInfo
{
        pVote,
};
Потом в public OnPlayerLogin(playerid), public OnPlayerRegister(playerid) и в паблик, который сохраняет аккаунт игрока. На пример public OnPlayerUpdate_GF(playerid)
PHP:
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    if(IsPlayerConnected(playerid))
        {
                new Float:oldposx, Float:oldposy, Float:oldposz;
                new Float:tempposx, Float:tempposy, Float:tempposz;
                GetPlayerPos(playerid, oldposx, oldposy, oldposz);
                tempposx = (oldposx -x);
                tempposy = (oldposy -y);
                tempposz = (oldposz -z);
                if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
                {
                        return 1;
                }
        }
        return 0;
}
Теперь опишу правила применения.
1. Добавляем в мод все, что я сказал, компилируем, исправляем полученные ошибки(если будут).
2. Говорим игрокам место регистрации и команду "/registration".
3. Как только наберется нужное количество кандидатов, записываете их имена вместо Ник Мэра 1, Ник Мэра 2 и т.д.
4. Говорим игрокам про команду "/vote".
5. Считаем голоса и ставим нового мэра.
Эсли не жалко дайте +
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу