Online Admin + Offline
se7en
26.02.2010
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:
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
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
mgr inż. Pavulon
26.02.2010
Żeby dorwać tych adminów offline to musiałbyś wczytać sobie users.ini
Tu przykładowa funkcja z admin.sma:
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
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
se7en
26.02.2010
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 ?
dalbys rade przerobic cus takiego ?
se7en
26.02.2010
steam id w amxbans jednak chce by sie wyswietlalo po Nicku
Edited by se7en, 26.02.2010 14:15.
Edited by se7en, 26.02.2010 14:15.
Mochi
28.02.2010
Ta, coś takiego zrobiłem.
"addons/amxmodx/configs/admins.ini ładujesz tu adminów "SID" "NICK" "FLAGI DO DANEJ GRUPY"
Edited by Mochi, 28.02.2010 11:48.
"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 }
Edited by Mochi, 28.02.2010 11:48.
Weed.
02.03.2010
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.