Система простых дуэлей 1 на 1

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

8

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

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

Игрок может вызвать другого на дуэль 1 на 1 в отдельной зоне.

Подходит для DM серверов и честных поединков.


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

1. Храним, кто кого вызвал на дуэль.

2. Команда /duel отправляет вызов, /accept принимает.

3. При принятии телепортируем обоих в дуэльную зону и выдаем оружие.


Реализация

Код:
new DuelRequestFrom[MAX_PLAYERS] = {INVALID_PLAYER_ID, ...};


CMD:duel(playerid, params[])
{
    new target;

    if(sscanf(params, "u", target))
        return SendClientMessage(playerid, -1, "Используй: /duel [id].");

    if(!IsPlayerConnected(target))
        return SendClientMessage(playerid, -1, "Игрок не найден.");

    if(target == playerid)
        return SendClientMessage(playerid, -1, "Нельзя вызвать на дуэль себя.");

    DuelRequestFrom[target] = playerid;

    SendClientMessage(playerid, -1, "Вызов на дуэль отправлен.");
    SendClientMessage(target, -1, "Тебя вызвали на дуэль, используй /accept.");

    return 1;
}


CMD:accept(playerid)
{
    new from = DuelRequestFrom[playerid];

    if(from == INVALID_PLAYER_ID || !IsPlayerConnected(from))
        return SendClientMessage(playerid, -1, "Нет активного вызова на дуэль.");

    DuelRequestFrom[playerid] = INVALID_PLAYER_ID;

    SetPlayerPos(from, 1000.0, 1000.0, 10.0);
    SetPlayerPos(playerid, 1005.0, 1000.0, 10.0);

    ResetPlayerWeapons(from);
    ResetPlayerWeapons(playerid);

    GivePlayerWeapon(from, 24, 200);
    GivePlayerWeapon(playerid, 24, 200);

    SendClientMessage(from, -1, "Дуэль началась.");
    SendClientMessage(playerid, -1, "Дуэль началась.");

    return 1;
}


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

1. Считать победы и поражения в дуэлях.

2. Делать ставки на дуэль.

3. Добавить разные арены и режимы оружия.
 

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

Сверху