Pitanje/savet: Kako mogu napraviti da kada admin dodeli permisiju adminu da server kreira folder (imam uradjeno preko dir_create) sa imenom igraca i da unutra kreira posebno falj za za svaku permisiju dodeljenu?
Opširnije: Zelim napraviti komandu /lastset id za gledanje davanja/skidanja permisija adminima, gde kada admin ukuca /lastset id da mu izbaci primer ako je dozvolio "Permisija Dozvolio Admin Vreme" ako je skinuo "Permisija Skinuto Admin Vreme Razlog" i tu ce pisati istorija setanja permisija igracu i samim tim kada izabere neki da mu otvori novi dialog gde ce mu pisati isto to i skroz dole ce imati ne znam dodeli/oduzmi. I zbog toga zelim da napravim da kreira file sa imenom admina i da unutar za svako setanje permisija kreira fail nzm 0.ini i unutra ispise sve podatke to je jest "Vreme, Permisija, Dovolio/Oduzeo Datum" itd itd.
File unutar File
902
pregleda
17
postova
22. Feb. 2024.
CMD:addtext(playerid, params[])
{
new text; // Povećao sam veličinu za slučaj dužih ulaznih tekstova
new playername;
GetPlayerName(playerid, playername, sizeof(playername));
if(sscanf(params, "s", text))
{
SendClientMessage(playerid, -1, "(KORISCENJE) {FFFFFF}/addtext (text)");
return 0; // Izlazimo iz funkcije jer nije unesen tekst
}
// Dodajemo novi red na kraju teksta da bi svaki sledeci bio ispod
new finalText;
format(finalText, sizeof(finalText), "%s\n", text);
// Kreiramo ili ažuriramo .ini datoteku
new filename;
format(filename, sizeof(filename), "%s.ini", playername);
new filehandle = fopen(filename, io_append); // Otvaramo datoteku u načinu dodavanja
if(filehandle != -1)
{
// Upisujemo tekst u datoteku
fwrite(filehandle, finalText);
// Zatvaramo datoteku
fclose(filehandle);
// Obaveštavamo igrača da je tekst dodat
SendClientMessage(playerid, -1, "Vaš tekst je uspešno dodat u .ini datoteku!");
}
else
{
// Ako datoteka nije uspela da se otvori
SendClientMessage(playerid, -1, "Došlo je do greške prilikom pristupanja .ini datoteci!");
}
return 1;
}ovako na ovaj način jedino da pokušaš ovo je samo kao test da se kreira fajl na ime onoga ko je koristio komandu i unosi text koji je napisao svaki jedan ispod drugoga, mada mjesta ima mnogo za bolje ali ovo je neki pravac
ugavnom testirano radi
23. Feb. 2024.
naithdefacto wrote on February 23, 2024, 12:20 pm:
Tehnicki nije pogresno rekao, termin file in file se koristi za .file za genericno cuvanje fajlova.
😄 😳
CMD:viewtext(playerid, params[])
{
// Provjera je li uneseni parametri
if (!strlen(params))
{
SendClientMessage(playerid, -1, "Upotrijebi: /viewtext ");
return 0;
}
new filename;
format(filename, sizeof(filename), "%s.ini", params);
// Provjera postoji li datoteka
if (!fexist(filename))
{
SendClientMessage(playerid, -1, "Datoteka nije pronađena za odabrano ime igrača.");
return 0;
}
new filehandle = fopen(filename, io_read);
if(filehandle != -1)
{
new dialogText;
dialogText = EOS;
new line;
new lines;
new lineCount = 0;
while (fread(filehandle, line, sizeof(line)) > 0 && lineCount < 10)
{
new lineLength = strlen(line);
new i = 0;
while(i < lineLength && i < 128) {
lines = line;
i++;
}
lines = EOS;
lineCount++;
}
fclose(filehandle);
for (new i = max(0, lineCount - 10); i < lineCount; i++)
{
strcat(dialogText, lines);
strcat(dialogText, "\n");
}
ShowPlayerDialog(playerid, DIALOG_TEXT, DIALOG_STYLE_MSGBOX, "Posljednjih 10 linija teksta", dialogText, "Zatvori", "");
}
else
{
SendClientMessage(playerid, -1, "Došlo je do greške prilikom pristupanja .ini datoteci.");
}
return 1;
}otprilike si ovo trazio napravljeno je za izvlacenje 10 linija iz fajla igraca cije ime uneses
23. Feb. 2024.
Prvo, mozes da koristis ini sistem za dozvole, a obican fajl da logujes sva skidanja/dodjeljivanja.
Drugo, koristi SQL, mocniji je i jako lako ces moci raditi bolesne stvari, tipa izbrisi sve izmjene koje je radio admin X u zadnjih XX dana...
Drugo, koristi SQL, mocniji je i jako lako ces moci raditi bolesne stvari, tipa izbrisi sve izmjene koje je radio admin X u zadnjih XX dana...
23. Feb. 2024.
Bit Frosty wrote on February 23, 2024, 8:58 pm:
Prvo, mozes da koristis ini sistem za dozvole, a obican fajl da logujes sva skidanja/dodjeljivanja.
Drugo, koristi SQL, mocniji je i jako lako ces moci raditi bolesne stvari, tipa izbrisi sve izmjene koje je radio admin X u zadnjih XX dana...
Drugo, koristi SQL, mocniji je i jako lako ces moci raditi bolesne stvari, tipa izbrisi sve izmjene koje je radio admin X u zadnjih XX dana...
Znam da je SQL abnormno mocniji i da mogu raditi svakakve bolesne stvari ali onda realno cu morati 90% koda da reworkujem (kao da pravim novu) za sta treba dosta vremena a zbog fakulteta i ostalog nemam toliko, vec duze vreme zelim da predjem i razmisljam o tome al nikako da odvojim vreme 😄 zato se mucim.
23. Feb. 2024.
Goku ^ wrote on February 23, 2024, 11:03 pm:
Znam da je SQL abnormno mocniji i da mogu raditi svakakve bolesne stvari ali onda realno cu morati 90% koda da reworkujem (kao da pravim novu) za sta treba dosta vremena a zbog fakulteta i ostalog nemam toliko, vec duze vreme zelim da predjem i razmisljam o tome al nikako da odvojim vreme 😄 zato se mucim.
Da li je bolje da sve prebacis? Vjerovatno.
Da li moras? Naravno da ne...
Niko tebi ne brani da te stvari ucitavas iz SQL umjesto iz nekog ini ili textualnog fajla, dok sve ostalo da ti ostane kako jeste...
24. Feb. 2024.
cozmic wrote on February 24, 2024, 4:03 pm:
https://github.com/GtakillerIV/IniToSql
Nista pocecemo to pa polako na tamo cemo da prebacimo sve na tenane 😄.
Takodje napravio sam ovo sto sam zeleo pa ako bude neko zeleo da napravi nesto slicno moze da iskoristi, ako neko zna kako sam mogao bolje da napravim slobodno neka kritikuje jebaga tu smo da naucimo.
CMD:testic(playerid, params[])
{
format(ifile, sizeof ifile,"imefalja/%s", GetName(id));
if(!dir_exists(ifile)) { dir_create(ifile); }
format(warning, sizeof warning,"imefalja/%s/%d.ini", GetName(id), PlayerInfo); // pBrojilica je da broji %d.ini po igracu
file_create(warning); //dodajte samo Sacuvaj Sta vec cuvate.
return 1;
}
new Admin, Razlog, Status;
forward IzvuciStatus( name[ ], value[ ] );
public IzvuciStatus( name[ ], value[ ] )
{
INI_Int("Status", Status);
INI_String("Admin", Admin);
INI_String("Razlog", Razlog);
return 1;
}
CMD:lista(playerid, params[])
{
new szFile, filename, formatiraniTekst, status, string2;
format(szFile, sizeof(szFile), "imefalja/%s", GetName(playerid));
for(new i = PlayerInfo; i >= 1; i--) //sortira od najnoviji falj ka najstarijem (ako ih ima 50 krece od 50 pa do 1)
{
format(filename, sizeof(filename), "imefalja/%s/%d.ini", GetName(playerid), i);
new INI:file = INI_Open(filename);
if(file)
{
INI_ParseFile(filename, "IzvuciStatus");
format(formatiraniTekst, sizeof(formatiraniTekst), "%s %s %s\n", Admin, Razlog, Status);
AddDialogListitem(playerid, formatiraniTekst);
INI_Close(file);
}
}
ShowPlayerDialogPages(playerid, "null", DIALOG_STYLE_TABLIST, "Lista Necega", "Dalje", "Izlaz", 15); //Koristim za stranice na 15 kreira novu stranicu
return 1;
}
Morate biti prijavljeni da biste odgovorili na ovu temu.
Prijava