Skocz do zawartości
encode

[CS:GO] Lista adminów online

Rekomendowane odpowiedzi

Plugin az sie prosi o:

  • RegConsoleCmd("sm_admins", XXXX) zamiast RegConsoleCmd("say", XXXX);
  • Podzielenie go na mniejsze funkcje

Bede marudzil, ale nie najlepiej napisany plugin ?

 

p.s.

To nie jest atak, tylko informacja co mozesz poprawic ?

Edytowane przez plx211

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

plugin info author w kodzie wskazywal ze tak, zaraz przepisze go i zamieszcze kod

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dawno nie pisalem w sourcepawn ?

Nie testowane:

#include <sourcemod>

ConVar cvarPluginEnable;
ConVar cvarShowMode;

enum ShowModeType {
  ShowMode_Chat = 1,
  ShowMode_Menu,
  ShowMode_Count
};

public void OnPluginStart() {
  RegConsoleCmd("sm_admins", onCmdAdmins);

  cvarPluginEnable = CreateConVar("adminlist_on", "1", "turns on and off admin list, 1=on ,0=off");
  cvarShowMode = CreateConVar("adminlist_mode", "1", "Output in: 1 - chat, 2 - menu");
}

public Action onCmdAdmins(int client, int args) {
  if (!cvarPluginEnable.BoolValue) {
    return Plugin_Handled;
  }

  int admin[MAXPLAYERS];
  int count = 0;
  
  for (int clientID = 1; clientID <= GetMaxClients(); ++clientID) {
    if (IsClientInGame(clientID) && GetUserAdmin(clientID) != INVALID_ADMIN_ID) {
      admin[count++] = clientID
    }
  } 

  show(client, admin, count);
  return Plugin_Continue;
}

void show(int client, int[] admin, int count) {
  switch (cvarShowMode.IntValue) {
    case ShowMode_Chat:
      showOnChat(client, admin, count);
    case ShowMode_Menu:
      showOnMenu(client, admin, count);
  }
}

void showOnChat(int client, int[] admin, int adminCount) {
  PrintToChat(client, "Lista adminow online:");

  for (int i = 0; i < adminCount; ++i) {
    PrintToChat(client, "%N", admin[i]);
  }
}

void showOnMenu(int client, int[] admin, int adminCount) {
  Menu menu = new Menu(menuHandler);
  menu.SetTitle("Lista adminow online:");

  char buffer[MAX_NAME_LENGTH + 1];
  for (int i = 0; i < adminCount; ++i) {
    Format(buffer, sizeof(buffer), "%N", admin[i]);
    menu.AddItem("", buffer);
  }

  menu.ExitButton = true;
  menu.Display(client, 15);
}

public int menuHandler(Menu menu, MenuAction action, int client, int options) {
  if (action == MenuAction_End) {
    delete menu;
  }
}

 

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ę...