Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Online Admin + Offline


  • Zamknięty Temat jest zamknięty
6 odpowiedzi w tym temacie

#1 se7en

    Zaawansowany

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:112
  • GG:
  • Imię:Konrad
  • Lokalizacja:Łódź
Offline

Napisano 26.02.2010 08:22

Witam

robie aktualnie taki prosty plugin ale sie zawiesilem w jednym miejscu.
nie będę tu pisal o moich postepach z pluginem, podam surowa wersje.
Aktualnie plugin pokazuje adminow Online:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Zarzad Adminow"
#define VERSION "1.0"
#define AUTHOR "se7en"

#define CharsMax(%1) sizeof %1 - 1

#define MAX_GROUPS 7

new g_groupNames[MAX_GROUPS][] = {
   
   "Super HeadAdmin",
   "Vice HeadAdmin",
   "Super Admin",
   "Admin",
   "Slot",
   "VIP",
   "Znajomi"
}

new g_groupFlags[MAX_GROUPS][] = {
   
   "abcdefghijlmnoprstuw",  
   "abcdefghijlnoprstuw",  
   "abcdefghijkloprstu",     
   "bcdefghijklu",    
   "bz",   
   "qz",      
   "az"           
}

new g_groupFlagsValue[MAX_GROUPS];

public plugin_init() {
   
   register_plugin(PLUGIN, VERSION, AUTHOR);
   
   for(new i = 0 ; i < MAX_GROUPS ; i++)
      g_groupFlagsValue[i] = read_flags(g_groupFlags[i]);
   
   register_clcmd("admin", "cmdWho", -1, "");
   register_clcmd("say /admin", "cmdWho", -1, "");
   register_clcmd("say /admins", "cmdWho", -1, "");
   register_concmd("say /adm", "cmdWho", -1, "");
   register_concmd("admin", "cmdWho", -1, "");
}


public cmdWho(id)
{
   static sPlayers[32], iNum, iPlayer;
   static sName[32], sBuffer[1024];
   
   static iLen;
   iLen = formatex(sBuffer, sizeof sBuffer - 1, "<body bgcolor=#000000><font color=#7b68ee><pre>");
   iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen,"<body bgcolor=^"black^" bgProperties=fixed><center><font color=#FFFFFF><pre>");
   
   
   get_players(sPlayers, iNum, "ch");
   
   for(new i = 0; i < MAX_GROUPS ; i++)
   {   
      iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center><h5><font color=^"orange^">---------------<B>%s</B>---------------^n</font></h5></center>", g_groupNames[i]);
     
      for(new x = 0; x < iNum ; x++)
      {   
         iPlayer = sPlayers[x];
         
         if(get_user_flags(iPlayer) == g_groupFlagsValue[i])
         {
            get_user_name(iPlayer, sName, sizeof sName - 1);
            iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center>%s^n</center>", sName);
         }
      }
   }
   show_motd(id, sBuffer, "Dzial Administracyjny");
   return 0;
}

no i teraz po wpisaniu /admin, automatycznie pokazuje mi osoby z danymi flagami w odpowiednim dziale, online.

i jak tu mam zrobic zeby pokazywalo WSZYSTKICH adminow w odpowiednich grupach (z dopiskiem Offline) , a przy adminach Online, mialby sie pokazywac tekst "Online".

huh nabroilem troche u siebie w plugsie wiec proszę was o pomoc :)
  • +
  • -
  • 0

#2 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 26.02.2010 11:53

Żeby dorwać tych adminów offline to musiałbyś wczytać sobie users.ini
Tu przykładowa funkcja z admin.sma:
loadSettings(szFilename[])
{
new File=fopen(szFilename,"r");

if (File)
{
new Text[512];
new Flags[32];
new Access[32]
new AuthData[44];
new Password[32];

while (!feof(File))
{
fgets(File,Text,sizeof(Text)-1);

trim(Text);

// comment
if (Text[0]==';')
{
continue;
}

Flags[0]=0;
Access[0]=0;
AuthData[0]=0;
Password[0]=0;

// not enough parameters
if (parse(Text,AuthData,sizeof(AuthData)-1,Password,sizeof(Password)-1,Access,sizeof(Access)-1,Flags,sizeof(Flags)-1) < 2)
{
continue;
}

admins_push(AuthData,Password,read_flags(Access),read_flags(Flags));

AdminCount++;
}

fclose(File);
}

if (AdminCount == 1)
{
server_print("[AMXX] %L", LANG_SERVER, "LOADED_ADMIN");
}
else
{
server_print("[AMXX] %L", LANG_SERVER, "LOADED_ADMINS", AdminCount);
}

return 1;
}


Wystarczy teraz wszystkich adminów zapisać w jakiejś tabeli, potem przejść pętlą po nich, sprawdzić który online i wyświetlić.
Tyle że w users.ini nie masz nick'a admina. Nie wiem co dokładnie chcesz osiągnąć z tymi adminami offline. Możesz również stworzyć jakiś inny plik w którym będą wypisani wszyscy admini z nick'ami itp
  • +
  • -
  • 0

#3 se7en

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 3
Nowy

  • Postów:112
  • GG:
  • Imię:Konrad
  • Lokalizacja:Łódź
Offline

Napisano 26.02.2010 12:09

no i wlasnie tak tez kombinowalem, posiadam amxbans wiec kombinowalem z admin_amxbans.sma ale to nie teges, albo wyswietla podwojnie (tzn se7en OFffline i se7en Online jako 2 wpisy...) albo wyswietla tylko offline ale nie trybi to i z offline i z online :/

dalbys rade przerobic cus takiego ? :]
  • +
  • -
  • 0

#4 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 26.02.2010 12:49

Adminów masz na IP/nick/steamid ?
  • +
  • -
  • 0

#5 se7en

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 3
Nowy

  • Postów:112
  • GG:
  • Imię:Konrad
  • Lokalizacja:Łódź
Offline

Napisano 26.02.2010 14:15

steam id w amxbans jednak chce by sie wyswietlalo po Nicku :)

Użytkownik se7en edytował ten post 26.02.2010 14:15

  • +
  • -
  • 0

#6 Mochi

    Zaawansowany

  • Użytkownik

Reputacja: 16
Początkujący

  • Postów:81
  • Lokalizacja:asd
Offline

Napisano 28.02.2010 10:36

Ta, coś takiego zrobiłem.

"addons/amxmodx/configs/admins.ini ładujesz tu adminów "SID" "NICK" "FLAGI DO DANEJ GRUPY"
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Zarzad Adminow"
#define VERSION "1.0"
#define AUTHOR "se7en"

#define CharsMax(%1) sizeof %1 - 1

#define MAX_GROUPS 7

new g_groupNames[MAX_GROUPS][] = {
	
	"Super HeadAdmin",
	"Vice HeadAdmin",
	"Super Admin",
	"Admin",
	"Slot",
	"VIP",
	"Znajomi"
}

new g_groupFlags[MAX_GROUPS][] = {
	
	"abcdefghijlmnoprstuw",  
	"abcdefghijlnoprstuw",  
	"abcdefghijkloprstu",     
	"bcdefghijklu",    
	"bz",   
	"qz",      
	"az"           
}
new MAX_ADMINS,sid[33][32],nick[33][32],online[33],flags[33][42]

public plugin_init() {
	
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_clcmd("admin", "cmdWho", -1, "");
	register_clcmd("say /admin", "cmdWho", -1, "");
	register_clcmd("say /admins", "cmdWho", -1, "");
	register_concmd("say /adm", "cmdWho", -1, "");
	register_concmd("admin", "cmdWho", -1, "");
	load_admins()
}
public load_admins()
{
	new file[65],steam[32],name[32],flagi[42]
	format(file,64,"addons/amxmodx/configs/admins.ini")
	new line=0,  text[128],chars 
	do{ 
		line = read_file(file,line,text,127,chars) 
		parse(text,127,steam,31,name,31,flagi,41)
		sid[MAX_ADMINS]=steam
		nick[MAX_ADMINS]=name
		online[MAX_ADMINS]=is_online(steam)
		flags[MAX_ADMINS]=flagi
		MAX_ADMINS++
	} 
	while(line!=0)  
		
}
public client_connect(id) 
{
	if(is_user_admin(id))
	{
		new steam[32]
		get_user_authid(id,steam,31)
		for(new i=0;i<MAX_ADMINS;i++)
		{
			if(equal(steam,sid[i])) online[i]=1
		}
	}
}
public cmdWho(id)
{
	static sBuffer[1024];
	
	static iLen;
	iLen = formatex(sBuffer, sizeof sBuffer - 1, "<body bgcolor=#000000><font color=#7b68ee><pre>");
	iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen,"<body bgcolor=^"black^" bgProperties=fixed><center><font color=#FFFFFF><pre>");
	
	
	//get_players(sPlayers, iNum, "ch");
	for(new i = 0; i < MAX_GROUPS ; i++)
	{   
		iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center><h5><font color=^"orange^">---------------<B>%s</B>---------------^n</font></h5></center>", g_groupNames[i]);
		
		for(new x = 0; x < MAX_ADMINS ; x++)
		{  	
			if(equal(flags[x],g_groupFlags[i]))
			{
				iLen += formatex(sBuffer[iLen], CharsMax(sBuffer) - iLen, "<center>%s - %s ^n</center>", nick[x],(online[x] == 1) ? "ONLINE":"OFFLINE");
			}
		}
	}
	show_motd(id, sBuffer, "Dzial Administracyjny");
	return 0;
}
stock is_online(steam[])
{
	new gracze =get_playersnum()
	new authid[32]
	for(new i=1;i<gracze;i++)
	{
		get_user_authid(i,authid,31)
		if(equal(authid,steam)) return 1
	}
	return 0
}

Użytkownik Mochi edytował ten post 28.02.2010 11:48

  • +
  • -
  • 0

#7 Weed.

    Profesjonalista

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:158
  • Lokalizacja:Kwidzyn
Offline

Napisano 02.03.2010 17:52

jesli mogl bym uzyc tego pluga na swoim serwie to prosil bym o edycje. zeby adminow nie czytalo z SId tylko z nicku poniewaz mam adminow na nick.
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych