File unutar File

Započeo Goku ^
22. Feb. 2024.
902
pregleda
17
postova
Dime123
4
Made Man
22. Feb. 2024.
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.
naithdefacto
3
Hustler
22. Feb. 2024.
Pa samo kreiraj file sa nazivom u tom njegovom folderu i upisi parametre ?
Dime123
4
Made Man
22. Feb. 2024.
naithdefacto wrote on February 22, 2024, 8:07 pm:
Pa samo kreiraj file sa nazivom u tom njegovom folderu i upisi parametre ?

Da mogu i kada bi htelo ne bi kacio ovde?
Raskiselišelitiseopanci
4
Enforcer
22. Feb. 2024.
samo mysql
Raskiselišelitiseopanci
4
Enforcer
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
Raskiselišelitiseopanci
4
Enforcer
23. Feb. 2024.
da kreira file unutar file radi //ti si uradio nešto što niko nije svaka čast
Raskiselišelitiseopanci
4
Enforcer
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
NegativeIQ
5
Kingpin
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...
Dime123
4
Made Man
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...

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.
NegativeIQ
5
Kingpin
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...
Fergosonn
4
Made Man
24. Feb. 2024.
Sada prebacis samo accounte u SQL, a kad imas vise vremena i ostalo?
naithdefacto
3
Hustler
24. Feb. 2024.
Potrazi ini to sql, mislim da je @bunta to skoro nasao, nisam siguran
Vedad.pwn
8
Underboss
🔥53
24. Feb. 2024.
naithdefacto wrote on February 24, 2024, 2:04 pm:
Potrazi ini to sql, mislim da je @bunta to skoro nasao, nisam siguran


https://github.com/GtakillerIV/IniToSql
Dime123
4
Made Man
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

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha