AwardAPI

NozmaD

Администратор
Команда форума
Администратор
Сообщения
166
Баллы
208
Скрипт предназначен для упрощения в подключении различных достижений на Вашем сервере. Иначе говоря перед нами готовая библиотека, которая умеет выдавать награды, а за что, уже решать Вам. В выдаче наград помогут API функции данного скрипта, которые расписаны ниже видео


Функции (Игрок)
  • InitPlayer(Client player) - Инициализирует игрока. Загружает его данные.
  • GiveAwardProgress(Client player, string ID, int progress) - Добавляет количество единиц к прогрессу награды (Retern type: bool. true если успешно, false не успешно)
  • SetAwardProgress(Client player, string ID, int progress) - Устанавливает количество единиц к прогрессу награды (Retern type: bool. true если успешно, false не успешно)
  • GetAwardProgress(Client player, string ID) - Получает прогресс запрошенной награды (Retern type: int)
  • RemoveAward(Client player, string ID) - Удаляет указанную награду у игрока. (Retern type: bool. true если успешно, false не успешно)
  • RemoveAllAwards(Client player) - Удаляет все награды у игрока. (Retern type: bool. true если успешно, false не успешно)
  • IsAwardUnlocked(Client player, string ID) - Проверяет, разблокировал ли игрок указанную награду или нет. (Retern type: bool. true если да, false нет)
  • GetAwardUnlockDate(Client player, string ID) - Возвращает дату разблокировки указанной награды игрока (Nullable DateTime - если игрок не разблокировал награду)
  • LockAward(Client player, string ID) - Заблокирует указанную награду игрока. (Retern type: bool. true если успешно, false не успешно)
  • UnlockAward(Client player, string ID) - Разблокирует указанную награду игроку. (Retern type: bool. true если успешно, false не успешно)
* Используйте InitPlayer перед использованием любых методов игрока.
* Вам не нужно использовать UnlockAward большую часть времени, поскольку GiveAwardProgress/ SetAwardProgress использует его самостоятельно, когда игрок достигает необходимого прогресса, чтобы разблокировать награду.

Функции (Для управления наградами)
  • CreateAward(string ID, string name, string description, string txd_lib, string txd_name, int txd_color, int required_progress) - Создает награду в AwardAPI. (Retern type: bool. true если создана, false не создана)
    • Используйте OpenIV для поиска txd libs и имен, автор рекомендует использовать с mpawards1 до mpawards6.
    • txd_color - 0 - бронза, 1 - серебро, 2 - золото, 3 - платина
  • IsIDInUse(string ID) - Проверяет, есть ли награда с указанным ID. (Retern type: bool. true если есть, false нету)
  • GetAllAwardIDs() - Возвращает идентификаторы всех созданных наград. (Retern type: string[])
  • GetAwardName(string ID) - Возвращает имя указанной награды. (Retern type: string)
  • GetAwardDescription(string ID) - Возвращает описание указанной награды. (Retern type: string)
  • GetAwardRequiredProgress(string ID) - Возвращает требуемый прогресс, чтобы разблокировать указанную награду. (Retern type: int)

Exported Event

Этот скрипт имеет событие, называемое OnPlayerUnlockAward, с тремя параметрами: player, award ID и award name.
Вы можете увидеть, как использовать его в приведенном ниже примере.
Убедитесь, что скрипты, использующие это событие, загружаются после AwardAPI.

Код скрипта, продемонстрированного в видео:
C#:
using GrandTheftMultiplayer.Server;
using GrandTheftMultiplayer.Server.API;
using GrandTheftMultiplayer.Server.Elements;
using GrandTheftMultiplayer.Server.Managers;
namespace DemoScript
{
    public class DemoScript : Script
    {
        public DemoScript()
        {
            API.onResourceStart += DemoScript_Init;
            API.onPlayerConnected += DemoScript_PlayerJoin;
            API.onPlayerDetonateStickies += DemoScript_StickiesDetonated;
            API.exported.AwardAPI.OnPlayerUnlockAward += new ExportedEvent(AwardUnlockEvent);
        }
        public void DemoScript_Init()
        {
            API.exported.AwardAPI.CreateAward("genji", "I NEED HEALING!", "Use the ~y~/healme ~w~command ~y~3 times.", "mpawardheists", "calmdown", 3, 3);
            API.exported.AwardAPI.CreateAward("kaboom", "Demolition Man", "Detonate sticky bombs for the first time.", "", "", 0, 1);
        }
        public void DemoScript_PlayerJoin(Client player)
        {
            API.exported.AwardAPI.InitPlayer(player);
        }
        public void DemoScript_StickiesDetonated(Client player)
        {
            if (!API.exported.AwardAPI.IsAwardUnlocked(player, "kaboom"))
            {
                API.exported.AwardAPI.UnlockAward(player, "kaboom");
            }
            else
            {
                player.sendChatMessage("You got the award, stop blowing stuff up already");
            }
        }
        public void AwardUnlockEvent(object[] args)
        {
            Client player = (Client)args[0];
            string award_ID = (string)args[1];
            string award_name = (string)args[2];
            player.sendChatMessage("You unlocked: " + award_name + " (" + award_ID + ")");
        }
        [Command("healme")]
        public void CMD_Heal(Client player)
        {
            API.exported.AwardAPI.GiveAwardProgress(player, "genji", 1);
            player.health = 100;
            player.sendChatMessage("Healed");
        }
        [Command("lockaward")]
        public void CMD_LockAward(Client player, string award_ID)
        {
            API.exported.AwardAPI.LockAward(player, award_ID);
        }
        [Command("unlockaward")]
        public void CMD_UnlockAward(Client player, string award_ID)
        {
            API.exported.AwardAPI.UnlockAward(player, award_ID);
        }
        [Command("removeaward")]
        public void CMD_RemoveAward(Client player, string award_ID)
        {
            API.exported.AwardAPI.RemoveAward(player, award_ID);
        }
        [Command("giveprogress")]
        public void CMD_GiveAwardProgress(Client player, string award_ID, int progress)
        {
            API.exported.AwardAPI.GiveAwardProgress(player, award_ID, progress);
        }
        [Command("setprogress")]
        public void CMD_SetAwardProgress(Client player, string award_ID, int progress)
        {
            API.exported.AwardAPI.SetAwardProgress(player, award_ID, progress);
        }
        [Command("getprogress")]
        public void CMD_GetAwardProgress(Client player, string award_ID)
        {
            player.sendChatMessage("Progress of " + award_ID + ": " + API.exported.AwardAPI.GetAwardProgress(player, award_ID));
        }
        [Command("awards")]
        public void CMD_Awards(Client player)
        {
            foreach (string ID in API.exported.AwardAPI.GetAllAwardIDs())
            {
                if (API.exported.AwardAPI.IsAwardUnlocked(player, ID))
                {
                    player.sendChatMessage(API.exported.AwardAPI.GetAwardName(ID) + " | Unlocked On: " + API.exported.AwardAPI.GetAwardUnlockDate(player, ID).ToString("dd/MM/yyyy HH:mm"));
                }
                else
                {
                    player.sendChatMessage(API.exported.AwardAPI.GetAwardName(ID) + " | Progress: " + API.exported.AwardAPI.GetAwardProgress(player, ID) + "/" + API.exported.AwardAPI.GetAwardRequiredProgress(ID));
                }
            }
        }
    }
}
 
Источник
Перейти

Вложения

  • AwardAPI.zip
    3.4 КБ · Просмотры: 1
Верх