Система простых квестов на убийства

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

8

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

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

Игрок получает задание убить определенное количество противников.

После выполнения выдается награда.


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

1. Храним цель по убийствам и текущий прогресс.

2. В OnPlayerDeath увеличиваем прогресс.

3. При достижении цели начисляем награду и сбрасываем квест.


Реализация

Код:
new QuestKillsTarget[MAX_PLAYERS];
new QuestKillsNow[MAX_PLAYERS];


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

    if(sscanf(params, "i", target))
        return SendClientMessage(playerid, -1, "Используй: /startkillquest [кол-во убийств].");

    if(target <= 0)
        return SendClientMessage(playerid, -1, "Цель должна быть больше нуля.");

    QuestKillsTarget[playerid] = target;
    QuestKillsNow[playerid] = 0;

    SendClientMessage(playerid, -1, "Квест на убийства начат.");

    return 1;
}


public OnPlayerDeath(playerid, killerid, reason)
{
    if(killerid != INVALID_PLAYER_ID)
    {
        if(QuestKillsTarget[killerid] > 0)
        {
            QuestKillsNow[killerid]++;

            if(QuestKillsNow[killerid] >= QuestKillsTarget[killerid])
            {
                GivePlayerMoney(killerid, 2000);
                SendClientMessage(killerid, -1, "Ты выполнил квест на убийства и получил награду.");

                QuestKillsTarget[killerid] = 0;
                QuestKillsNow[killerid] = 0;
            }
        }
    }

    return 1;
}


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

1. Делать квесты с разными целями по фракциям.

2. Добавить сложность квестов и награды.

3. Хранить статистику выполненных квестов.
 

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

Сверху