Skocz do zawartości
Master

[CS:GO] Przenoszenie graczy przez admina

Rekomendowane odpowiedzi

  • Lubię to! 6

Opis

 

Plugin dodaje nową zakładkę w menu admina, która umożliwia przeniesienie gracza do wybranej drużyny. 

 

Plugin

 

Spoiler

#include <adminmenu>

#pragma semicolon 1
#pragma newdecls required

#define NAME		"Admin Change Team"
#define AUTHOR		"Master"
#define VERSION		"1.0"
#define URL			"https://cswild.pl/"

public Plugin myinfo =
{ 
	name	= NAME,
	author	= AUTHOR,
	version	= VERSION,
	url		= URL
};

#define TAG " [\x09Drużyny\x01] "

TopMenu g_tmAdminMenu;

public void OnPluginStart()
{
    TopMenu topmenu;

    if(LibraryExists("adminmenu") && ((topmenu = GetAdminTopMenu()) != null))
        OnAdminMenuReady(topmenu);
}

public void OnAdminMenuReady(Handle aTopMenu)
{
    TopMenu aTopMenus = TopMenu.FromHandle(aTopMenu);

    if(aTopMenus == g_tmAdminMenu)
		return;

    g_tmAdminMenu = aTopMenus;

    TopMenuObject CategoryId = g_tmAdminMenu.AddCategory("master_ct", Handle_change_team, "master_ct", ADMFLAG_BAN);

    if(CategoryId == INVALID_TOPMENUOBJECT)
		return;

    g_tmAdminMenu.AddItem("master_ct_item", Handle_change_team_item, CategoryId, "master_ct_item", ADMFLAG_BAN);
}

public void Handle_change_team(TopMenu topmenu, TopMenuAction action, TopMenuObject topobj_id, int iClient, char[] buffer, int maxlength)
{
    if(action == TopMenuAction_DisplayOption || action == TopMenuAction_DisplayTitle)
    {
        Format(buffer, maxlength, "Przenieś Gracza");
    }
}

public void Handle_change_team_item(TopMenu topmenu, TopMenuAction action, TopMenuObject topobj_id, int iClient, char[] buffer, int maxlength)
{
    if(action == TopMenuAction_DisplayOption)
    {
        Format(buffer, maxlength, "Wybierz gracza");
    }
    else if(action == TopMenuAction_SelectOption)
    {
        BuildMenu(iClient);
    }
}

void BuildMenu(int client)
{
    Menu menu = new Menu(Menu_Handler);
    menu.SetTitle("Wybierz gracza do przeniesienia:");

    char sBuffer[128];

    for(int i = 1; i <= MaxClients; i++)
    {
        if(!IsClientInGame(i))
            continue;

        if(IsClientSourceTV(i))
            continue;

        if(client == i)
            continue;

        if(GetUserFlagBits(i) & ADMFLAG_BAN)
            continue;

        Format(sBuffer, sizeof(sBuffer), "%N", i);

        char sTarget[8];
        Format(sTarget, sizeof(sTarget), "%d", GetClientUserId(i));

        menu.AddItem(sTarget, sBuffer);
    }

    if(!menu.ItemCount)
    {
        menu.AddItem(NULL_STRING, "Brak dostępnych graczy", ITEMDRAW_DISABLED);
    }

    menu.ExitBackButton = true;
    menu.Display(client, 0);
}

public int Menu_Handler(Menu menu, MenuAction action, int client, int param2)
{
    switch(action)
    {
        case MenuAction_End:
        {
            delete menu;
        }
        case MenuAction_Cancel:
        {
            if(param2 == MenuCancel_ExitBack && g_tmAdminMenu)
            {
                g_tmAdminMenu.Display(client, TopMenuPosition_LastCategory);
            }
        }
        case MenuAction_Select:
        {
            char sTargetUserID[8];
            menu.GetItem(param2, sTargetUserID, sizeof(sTargetUserID));

            Menu menuTeam = new Menu(MenuTeam_Handler);
            menuTeam.SetTitle("Wybierz drużynę docelową:");

            menuTeam.AddItem(sTargetUserID, "Obserwatorzy");
            menuTeam.AddItem(sTargetUserID, "Terroryści");
            menuTeam.AddItem(sTargetUserID, "Anty-Terroryści");

            menuTeam.ExitBackButton = true;
            menuTeam.Display(client, 60);
        }
    }
}

public int MenuTeam_Handler(Menu menu, MenuAction action, int client, int param2)
{
    switch(action)
    {
        case MenuAction_End:
        {
            delete menu;
        }
        case MenuAction_Cancel:
        {
            if(param2 == MenuCancel_ExitBack)
            {
                BuildMenu(client);
            }
        }
        case MenuAction_Select:
        {
            char sTargetUserID[8];
            menu.GetItem(param2, sTargetUserID, sizeof(sTargetUserID));
    
            int targetUserID = StringToInt(sTargetUserID);

            int target = GetClientOfUserId(targetUserID);

            if(target)
            {
                param2++;

                char sTeam[16];
                sTeam = param2 == 1 ? "Obserwatorów" : param2 == 2 ? "Terrorystów" : "Anty-Terrorystów";

                int iTeam = GetClientTeam(target);

                if(iTeam != param2)
                {
                    ChangeClientTeam(target, param2);

                    PrintToChat(client, "%s Pomyślnie przeniesiono gracza \x0B%N \x01do drużyny \x08%s", TAG, target, sTeam);

                    PrintToChat(target, "%s Zostałeś przeniesiony przez admina \x0B%N \x01do drużyny \x08%s", TAG, client, sTeam);
                }
                else
                {
                    PrintToChat(client, "%s Gracz \x0B%N \x01znajduję się już w drużynie \x08%s", TAG, target, sTeam);
                }
            }
            else
            {
                PrintToChat(client, "%s Gracz jest nieosiągalny", TAG);
            }
        }
    }
}

 

 

Master_Admin_Change_Team.sp
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Edytowane przez Master

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
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.   Usuń 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ć obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...