Доступ к готовым решениям

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

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

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

Мануал Улучшенная система мероприятий

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

Толкин

Компетентный
Было скучно и решил написать систему мероприятий, как по мне так она уникальна, а в чем же ее уникальность?

1. Всех игроков при ТП строит в ширенгу.
2. Блокирует им движение.
3. Блокирует чат.
4. Блокировки снимаются при старте МП.

И так, приступим к коду.

Ко всем new:
PHP:
new Float: mp_player_pos_x,
	Float: mp_player_pos_y,
	Float: mp_player_pos_z;

new mp_launch_event,
	mp_order_ranked;

new bool: mp_block_chat[MAX_PLAYERS char];
В OnPlayerText добавляем:
PHP:
if(mp_block_chat{playerid} == true) return 0;
Ко всем командам:
PHP:
CMD:mp_create(playerid, params[])
{
    if(mp_launch_event == 1)
        return SendClientMessage(playerid, -1, !"На данный момент уже проходит мероприятие.");

    if(!GetPVarInt(playerid, !"WarningBug"))
    {
        ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, !"Внимание!",
            !"{ffffff}Перед использованием команды, пожалуйста ознакомьтесь с инструкцией.\n\n\
            Когда Вы ввели команду система предложила Вам выбрать координату по которой будут спавнится игроки\n\
            X, Y или Z, ы должны встать на ровную поверхность и ввести команду и один из параметров.\n\
            Какой параметр вы выберите по такому и будут выстраиваться игроки в ширенгу при телепортировании.",
            !"Принять", !"Закрыть");
        SetPVarInt(playerid, !"WarningBug", 1);
    }
    else
    {
        if(isnull(params))
            return SendClientMessage(playerid, -1, !"Подсказка: Введите /mp_go [1 (X) или 2 (Y) или 3 (Z)]");

        new style_mp = strval(params);

        if(!(1 < style_mp < 3))
            return SendClientMessage(playerid, -1, !"Доступно от 1 до 3.");

        mp_launch_event = 1;
        mp_order_ranked = style_mp;
        GetPlayerPos(playerid, mp_player_pos_x, mp_player_pos_y, mp_player_pos_z);
        SendClientMessageToAll(-1, !"Открыт телепорт на мероприятие(/tp_mp).");
    }
    return true;
}

CMD:mp_go(playerid)
{
    foreach(new i : Player)
	{
    	if(0 == IsPlayerInRangeOfPoint(i, 800, mp_player_pos_x, mp_player_pos_y, mp_player_pos_z))
			continue;
			
    	TogglePlayerControllable(i, 0);
    	mp_block_chat{i} = false;
	}
	mp_launch_event = mp_order_ranked = 0;
	SendClientMessageToAll(-1, !"Мероприятие успешно начато! Движение и чат вновь доступны для участников мероприятия.");
	return true;
}


CMD:tp_mp(playerid)
{
    if(!mp_launch_event)
	    return SendClientMessage(playerid, -1, !"На данный момент мероприятие не состоится.");

	switch(mp_order_ranked)
    {
        case 1: SetPlayerPos(playerid, mp_player_pos_x += 2, mp_player_pos_y, mp_player_pos_z);
        case 2: SetPlayerPos(playerid, mp_player_pos_x, mp_player_pos_y += 2, mp_player_pos_z);
        case 3: SetPlayerPos(playerid, mp_player_pos_x, mp_player_pos_y, mp_player_pos_z += 2);
    }
    TogglePlayerControllable(playerid, 1);
    mp_block_chat{playerid} = true;

    ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, !"Внимание!",
		!"{ffffff}Вы телепортировались на мероприятие, Ваша возможность двигаться и использовать чат отключена.\n\n\
		Соблюдайте правила мероприятия и слушайте указания администрации.",
		!"Принять", !"Закрыть");
	return true;
}
Вот и все, удачного использования.

Если будут баги, ошибки - пишите.
​
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу