Простая система репутации игрока

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

8

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

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

Репутация показывает отношение сообщества к игроку.

Игроки могут повышать или понижать репутацию друг другу.

Подходит для RP и социальных серверов.


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

1. Храним числовое значение репутации для каждого игрока.

2. Команда /rep повышает репутацию цели, /report снижает.

3. Добавляем команду для просмотра своей репутации.


Реализация

Код:
new PlayerRep[MAX_PLAYERS];


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

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

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

    if(target == playerid)
        return SendClientMessage(playerid, -1, "Нельзя изменять себе репутацию.");

    PlayerRep[target]++;

    SendClientMessage(playerid, -1, "Ты повысил репутацию игроку.");
    SendClientMessage(target, -1, "Тебе повысили репутацию.");

    return 1;
}


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

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

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

    if(target == playerid)
        return SendClientMessage(playerid, -1, "Нельзя изменять себе репутацию.");

    PlayerRep[target]--;

    SendClientMessage(playerid, -1, "Ты понизил репутацию игроку.");
    SendClientMessage(target, -1, "Тебе понизили репутацию.");

    return 1;
}


CMD:myrep(playerid)
{
    new msg[64];

    format(msg, sizeof msg, "Твоя репутация: %d.", PlayerRep[playerid]);
    SendClientMessage(playerid, -1, msg);

    return 1;
}


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

1. Ограничить количество голосов в день.

2. Делать бонусы при высокой репутации.

3. Показывать репутацию в диалогах и табличках.
 

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

Сверху