#include <amxmodx>
#include <amxmisc>
new gTempAdminFile[64];
public plugin_init( )
{
register_plugin("Temp Admin", "1.1", "Alka&ZiuTeK");
register_concmd("amx_tempadmin", "cmdAddTempAdmin", ADMIN_IMMUNITY, "<#nick> <#haslo> <#na ile dni> <#flagi admina>");
}
public cmdAddTempAdmin( id, level, cid )
{
if( !cmd_access( id, level, cid, 5 ) )
return PLUGIN_HANDLED;
new sArg[32], sArg2[32], sArg3[32], sArg4[32];
read_argv(1, sArg, sizeof sArg - 1);
read_argv(2, sArg2, sizeof sArg2 - 1);
read_argv(3, sArg3, sizeof sArg3 - 1);
read_argv(4, sArg4, sizeof sArg4 - 1);
new iTarget = cmd_target(id, sArg, 8);
new sTargetInfo[32];
if(!iTarget) sTargetInfo=sArg
else if(is_user_admin(iTarget))
{
client_print(id, print_console, "Player %d is already an admin, check ^"users.ini^" and modify his flags.", iTarget);
return 1;
}
new iTimeLength;
iTimeLength = str_to_num(sArg3) * 86400 //liczba mnozona przez ilosc sekund w dniu
//iTimeLength = str_to_num(sArg3) * 60 //liczba mnozona przez ilosc sekund w dniu
new iFile = fopen(gTempAdminFile, "at+");
new sBuffer[128];
formatex(sBuffer, sizeof sBuffer - 1, "^n%s;%s;%s;%d", sTargetInfo, sArg2,sArg4, get_systime() + iTimeLength);
fprintf(iFile, sBuffer);
fclose(iFile);
//CheckAdmin(iTarget);
client_print(id, print_console, "Successfully added player %d to temp admin list.", iTarget);
return PLUGIN_HANDLED
}
public client_authorized(id)
CheckAdmin(id);
public client_infochanged(id)
{
static sNewName[32], sOldName[32];
get_user_name(id, sOldName, sizeof sOldName - 1);
get_user_info(id, "name", sNewName, sizeof sNewName - 1);
if(!equali(sNewName, sOldName))
set_task(0.1,"CheckAdmin",id)
// CheckAdmin(id)
}
public cmdCheckAdmins()
{
static sPlayers[32], iNum;
get_players(sPlayers, iNum, "ch");
for(new i = 0 ; i < iNum ; i++)
CheckAdmin(sPlayers[i]);
}
public CheckAdmin(index)
{
static sUserInfo[32],haselko[32]
//get_user_info(index,"name",sUserInfo,sizeof sUserInfo -1)
get_user_name(index,sUserInfo,sizeof(sUserInfo)-1)
get_user_info(index,"_pw",haselko,sizeof haselko -1)
static iFlags;
iFlags = get_user_flags(index);
static iFile;
iFile = fopen(gTempAdminFile, "rt");
static sBuffer[128], sTemp[4][32];
new iLine;
while(!feof(iFile))
{
fgets(iFile, sBuffer, sizeof sBuffer - 1);
if(sBuffer[0] == ';' || !sBuffer[0])
{
iLine++;
continue;
}
str_piece(sBuffer, sTemp, sizeof sTemp, sizeof sTemp[] - 1, ';');
if(equali(sUserInfo, sTemp[0]) && get_systime() > str_to_num(sTemp[3]))
{
if(iFlags == read_flags(sTemp[2]))
{
remove_user_flags(index, read_flags(sTemp[2]));
set_user_flags(index, read_flags("z"));
}
write_file(gTempAdminFile, ";Admin expired", iLine);
break;
}
if(equali(sUserInfo, sTemp[0]) && get_systime() <= str_to_num(sTemp[3]))
{
if(equali(haselko,sTemp[1]))
{
if(iFlags != read_flags(sTemp[2]))
{
remove_user_flags(index, read_flags("z"));
set_user_flags(index, read_flags(sTemp[2]));
}
}
else server_cmd("kick #%d ^"Probojesz wejsc na nick, admina, ustaw haslo lub zmien nick.^"", get_user_userid(index))
break;
}
iLine++;
}
fclose(iFile);
}
stock str_piece(const input[], output[][], outputsize, piecelen, token = '|')
{
new i = -1, pieces, len = -1 ;
while ( input[++i] != 0 )
{
if ( input[i] != token )
{
if ( ++len < piecelen )
output[pieces][len] = input[i] ;
}
else
{
output[pieces++][++len] = 0 ;
len = -1 ;
if ( pieces == outputsize )
return pieces ;
}
}
return pieces + 1;
}
public plugin_cfg()
{
new sConfigsDir[64];
get_configsdir(sConfigsDir, sizeof sConfigsDir - 1);
formatex(gTempAdminFile, sizeof gTempAdminFile - 1, "%s/temp_admin.ini", sConfigsDir);
if(!file_exists(gTempAdminFile))
write_file(gTempAdminFile, ";Temporary Admins File^n;Do not modify any existent line on this file^n;To add a comment line just begin it with an ^";^"", -1);
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
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.
|
Guest Message by DevFuse
Temp adminNa jakiej zasadzie oblicza czas?
Temat rozp. Kefu, 18.05.2011 22:37
2 odpowiedzi w tym temacie
#1
Napisano 18.05.2011 22:37
Witam mam pytanko na jakiej zasadzie poniższy plugin oblicza czas dodania admina? Bo za każdym razem wychodzi inna liczba.
#2
Napisano 19.05.2011 08:28
w .sma masz cos takiego:
wg moich obliczen admin jest na 24 godziny jesli wpiszesz wartosc 1
masz przyklad w tym sma jak powinna wygldac ta komenda i to nawet z niej mozna wywnioskowac, ze admina dajesz w formacie "dni"
aczkolwiek zawsze wartosc 86400 mozesz zmienic na inna, zeby liczylo czas np w sekundach, wtedy odkomentuj to:
(czyli usun // )
a zakomentuj z kolei linijke wyzej. i wtedy przy dawaniu admina obliczaj czas w sekundach
iTimeLength = str_to_num(sArg3) * 86400 //liczba mnozona przez ilosc sekund w dniu
wg moich obliczen admin jest na 24 godziny jesli wpiszesz wartosc 1
masz przyklad w tym sma jak powinna wygldac ta komenda i to nawet z niej mozna wywnioskowac, ze admina dajesz w formacie "dni"
register_concmd("amx_tempadmin", "cmdAddTempAdmin", ADMIN_IMMUNITY, "<#nick> <#haslo> <#na ile dni> <#flagi admina>");
aczkolwiek zawsze wartosc 86400 mozesz zmienic na inna, zeby liczylo czas np w sekundach, wtedy odkomentuj to:
//iTimeLength = str_to_num(sArg3) * 60 //liczba mnozona przez ilosc sekund w dniu
(czyli usun // )
a zakomentuj z kolei linijke wyzej. i wtedy przy dawaniu admina obliczaj czas w sekundach
Użytkownik hiroshima edytował ten post 19.05.2011 08:28
#3
Napisano 19.05.2011 13:50
tak tak wiem czytałem plik i komentarze. Nie ogarniam pluginów ale z innych jeżyków znam co nie co to trochę ogarniam ale chodzi mi w jaki sposób on to liczy bo np jak dam na 1 dzień to w pliku temp_admin.ini pokazuje to wszystko a czas jest pokazany w ten sposób: 1308341985
i za każdym razem jest inna liczba.
i za każdym razem jest inna liczba.
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych