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

Temp adminNa jakiej zasadzie oblicza czas?


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

#1 Kefu

    Życzliwy

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:23
  • Imię:Kewin
  • Lokalizacja:Podawanie adresów IP jest kategorycznie zabronione poza działem do tego wyznaczonym. Tyczy się to również profili użytkowników - jedynym wyjątkiem jest podpis(sygnaturka).
Offline

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.


#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 }
*/

  • +
  • -
  • 0

#2 Hiroshima

    Godlike

  • Przyjaciel

Reputacja: 1 327
Godlike

  • Postów:4 984
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Málaga
Offline

Napisano 19.05.2011 08:28

w .sma masz cos takiego:


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

  • +
  • -
  • 0

#3 Kefu

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:23
  • Imię:Kewin
  • Lokalizacja:Podawanie adresów IP jest kategorycznie zabronione poza działem do tego wyznaczonym. Tyczy się to również profili użytkowników - jedynym wyjątkiem jest podpis(sygnaturka).
Offline

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.
  • +
  • -
  • 0




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

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