Система личного телефона игрока

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

8

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

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

Игрок получает номер телефона и может звонить другим игрокам.

Подходит для RP серверов с имитацией связи.


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

1. Храним номер телефона для каждого игрока.

2. Команда /call вызывает другого игрока по его номеру.

3. Команда /answer принимает звонок.


Реализация

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


CMD:setphone(playerid, params[])
{
    new num;

    if(sscanf(params, "i", num))
        return SendClientMessage(playerid, -1, "Используй: /setphone [номер].");

    PlayerPhone[playerid] = num;
    SendClientMessage(playerid, -1, "Номер телефона установлен.");

    return 1;
}


CMD:call(playerid, params[])
{
    new num;

    if(sscanf(params, "i", num))
        return SendClientMessage(playerid, -1, "Используй: /call [номер].");

    new target = INVALID_PLAYER_ID;

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        if(PlayerPhone[i] == num)
        {
            target = i;
            break;
        }
    }

    if(target == INVALID_PLAYER_ID)
        return SendClientMessage(playerid, -1, "Абонент с таким номером не найден.");

    InCallWith[playerid] = target;
    InCallWith[target] = playerid;

    SendClientMessage(playerid, -1, "Ты звонишь абоненту.");
    SendClientMessage(target, -1, "Тебе поступил звонок, используй /answer.");

    return 1;
}


CMD:answer(playerid)
{
    if(InCallWith[playerid] == INVALID_PLAYER_ID)
        return SendClientMessage(playerid, -1, "Тебе сейчас никто не звонит.");

    SendClientMessage(playerid, -1, "Ты принял звонок.");

    return 1;
}


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

1. Передавать текст сообщений только между собеседниками.

2. Добавить тарифы и оплату за звонки.

3. Реализовать SMS отдельной командой.
 

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

Сверху