Jump to content

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


-_-

Recommended Posts

  • Root

[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
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site you agree to Privacy Policy