Skocz do zawartości

[CS 2] qCollectEvent - Zbieranie przedmiotów i tworzenie zestawów


-_-

Rekomendowane odpowiedzi

  • Właściciel

[CS 2] qCollectEvent - Zbieranie przedmiotów i tworzenie zestawów

Aktualna wersja: 1.02

 

OPIS

Plugin dodaje do gry event (komenda !event), który polega na zdobywaniu danych przedmiotów z zabójstwa, podłożenia bomby, rozbrojenia bomby, oczywiście z daną szansą na to i wymienianiu ich na zestawy, które to następnie wymieniamy na nagrody. Mamy do dyspozycji config, który pozwala nam samemu tworzyć te itemy i nazywać je w odpowiedni sposób, więc mamy pełny zakres działań jeśli chodzi o wygląd tegoż oto eventu. Po zebraniu danych przedmiotów możemy je wymienić na zestaw, a zestaw wymieniamy na nagrody, lecz opcja z menu nagród jest zrobiona pod API, więc w osobnym pluginie możemy napisać sobie to jak to ma działać (poniżej przykład z menu)

Plugin już był testowany na moich super mocach jakieś parę miesięcy temu, ale teraz postanowiłem to rozbudowac właśnie oto API.
Tak, mogę odpłatnie wykonać do tego nagrody

 

public class CollectEventMenu : BasePlugin
{
    public override string ModuleName => "qCollectEventMenu";
    public override string ModuleVersion => "v1.0.0";
    public override string ModuleAuthor => "-_- (Karol Skupien)";
    public override string ModuleDescription => "Collect Event Menu";

    public static PluginCapability<ICollectEventAPI> SharedPluginAPICapability { get; } = new("qcollectevent:api-plugin");
    public static PlayerCapability<IPlayerCollectEventAPI> SharedPlayerAPICapability { get; } = new("qcollectevent:api-player");

    private ICollectEventAPI? _pluginAPI;

    public override void Load(bool hotReload)
    {

    }

    public override void OnAllPluginsLoaded(bool hotReload)
    {
      	// rejestrowanie api
        _pluginAPI = SharedPluginAPICapability.Get();
      	// rejestrowanie funkcji do której odwołamy się z menu
        _pluginAPI?.Hook_OnMenuCollectHandler(OnMenuHandler);
    }

    public override void Unload(bool hotReload)
    {
      	// wyrejestrowanie funkcji do której odwołamy się z menu
        _pluginAPI?.Unhook_OnMenuCollectHandler(OnMenuHandler);
    }


    public void OnMenuHandler(CCSPlayerController clientId)
    {
        var menuData = new CenterHtmlMenu("Wymień nagrodę na NIC", this);

        menuData.AddMenuOption("Wymień", (clientId, option) =>
        {
      		// pobieranie danych gracza
            IPlayerCollectEventAPI? playerApiData = SharedPlayerAPICapability.Get(clientId);
            if (playerApiData == null)
            {
                clientId.PrintToChat("BŁĄD");
                return;
            }

      		// sprawdzanie ile ma zestawów - w tym przypadku nie blokuje wykonania by pokazać że działa
            if (playerApiData.EventKit <= 0)
            {
                clientId.PrintToChat("Nie masz zestawu, ale tym razem pozwolę Ci to wymienić");
            }

            clientId.PrintToChat("Wymieniłeś jeden zestaw na nic");
      		// zabieramy jeden zestaw
            playerApiData.EventKit--;
            clientId.PrintToChat($"Masz teraz {playerApiData.EventKit} zestawów");

            MenuManager.CloseActiveMenu(clientId);
        });

        menuData.AddMenuOption("Nie wymieniaj", (clientId, option) =>
        {
            MenuManager.CloseActiveMenu(clientId);
        });

        menuData.Open(clientId);
    }
}

 

API

namespace qCollectEventAPI
{
	// dane gracza
    public interface IPlayerCollectEventAPI
    {
        int EventKit { get; set; }	// ilość zestawów
        Dictionary<string, int> ItemsData { get; }	// słownik z przedmiotami gracza
    }

    public interface ICollectEventAPI
    {
        delegate void OnMenuCollect(CCSPlayerController clientId);

        void Hook_OnMenuCollectHandler(OnMenuCollect handler);
        void Unhook_OnMenuCollectHandler(OnMenuCollect handler);
    }
}

 

CONFIG

{
	// dane do bazy
  "Database": {
    "Hostname": "hostname",
    "Database": "database",
    "UserName": "username",
    "Password": "password"
  },

  "DropChance": [ 10, 100 ],	// szansa na drop: 1-100 <= 10
  "LimitItems": 5,	// limit posiadanego itemu danego typu

  // limity dla danych uprawnień
  "Limits": [
    {
      "permission": "@qvip/vip",
      "limit": 0	// 0 = brak limitu
    }
  ],

  // tutaj podajemy jakie itemy się dropi żeby zebrać cały zestaw. Nie ma limitów przedmiotów
  "Items": [
    {
      "code": "notebook",	// oznaczenie przedmiotu (dla bazy oraz lang)
      "chance": 10	// szansa na dropniecie (sumuje wszystkie wartosci przedmiotów i tak losuje)
    },
    {
      "code": "pen",
      "chance": 10
    },
    {
      "code": "pencilcase",
      "chance": 10
    },
    {
      "code": "backpack",
      "chance": 10
    },
    {
      "code": "book",
      "chance": 10
    },
    {
      "code": "sneakers",
      "chance": 10
    }
  ]
}

 

KOMENDY

css_event - menu eventu

 

UPRAWNIENIA

 

LISTA ZMIAN

v1.0.2 (22.11.2024)
1. Dodano API
2. Zaktualizowano MysqlConnector

 

CENNIK

Plugin dostępny tylko dla osób w klubie. Dostęp do klubu jest płatny, napisz do @ -_-

  • Like 2
Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   1 użytkownik

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z tej strony zgadzasz się na Polityka prywatności