Толкин
Компетентный
Было скучно и решил написать систему мероприятий, как по мне так она уникальна, а в чем же ее уникальность?
1. Всех игроков при ТП строит в ширенгу.
2. Блокирует им движение.
3. Блокирует чат.
4. Блокировки снимаются при старте МП.
И так, приступим к коду.
Ко всем new:
В OnPlayerText добавляем:
Ко всем командам:
Вот и все, удачного использования.
Если будут баги, ошибки - пишите.
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];
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;
}
Если будут баги, ошибки - пишите.
Последнее редактирование модератором:
