Jump to content

script Práca so súbormi


Tanga

Recommended Posts

Toto je len ukážka použitia môjho includu na prácu so súbormi.
Ak ho ešte nemáš, sťahuj tu. *Sťahuj tú verziu, ktorá má 7.3 KB!
Preskočím tú časť, kde vysvetlujem, že môj includ je určený na používanie ini súborov.
Všetko sa dá nájsť v linku na jeho stiahnutie.
Zoznam funkcií v include je tu:


VytvoritSubor(subor[]); 
VymazatSubor(subor[]); // Maže súbor
ExistujeSubor(subor[]); // Vracia či súbor existuje
ZapisatInt(subor[],tag[],int,bool:prepisanie); // Ak údaj už je zapísaný, prepísanie daj true
ZapisatString(subor[],tag[],string[],bool:prepisanie); // Ak údaj už je zapísaný, prepísanie daj true
ZapisatFloat(subor[],tag[],float:RealneCislo,bool:prepisanie); // Ak údaj už je zapísaný, prepísanie daj true
PrecitatInt(subor[],tag[]); // Vracia integer
PrecitatString(subor[],tag[]); // Vracia string
PrecitatFloat(subor[],tag[]); // Vracia float


Asi treba bližšie vysvetliť zapisovacie funkcie, pretože ten posledný argument je netradičný (na urýchlenie skriptu).
Ukážem použitie pri zapisovaní a čítaní nejakého desatinného čísla.

//Posledný argument určuje, že či už bol predtým tento údaj zapísaný
VytvoritSubor("TEST.TXT");
ZapisatFloat("TEST.TXT","G",float:9.80665,false);
// Posledný argument je false, pretože predtým tam daný riadok ("G") nebol
printf("Gravitačná konštanta je rovná '%f'.",PrecitatFloat("TEST.TXT","G"));
ZapisatFloat("TEST.TXT","G",float:1.56789,true); 
// Už existuje riadok "G", takže použijem posledný argument true
printf("Gravitačná konštanta sa určite nerovná '%f'.",PrecitatFloat("TEST.TXT","G"));

Tak a teraz keď som vysvetlil daný argument, môžem urobiť rovno registračný systém, na tom ukážem ostatné funkcie.

#include <a_samp>
#include <Súbory>
#include <zcmd>

new bool:Prihlaseny[MAX_PLAYERS];

public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid,0xFF0000FF,"Použi /prihlasit heslo");
    Prihlaseny[playerid] = false;
}

public OnPlayerDisconnect(playerid)
{
    if(Prihlaseny[playerid] == true)
    {
        ZapisatFloat(SuborHraca(playerid),"HP",float:GetPlayerHealth(playerid),true);
        ZapisatInt(SuborHraca(playerid),"Cash",GetPlayerMoney(playerid),true);
    }
}


public OnPlayerSpawn(playerid)
{
    if (!Prihlaseny[playerid])
    {
        Kick(playerid);
    }
}

command(prihlasit,playerid,params[])
{
    if(!isnull(params))
    {
        if (ExistujeSubor(SuborHraca(playerid)))
        {
            if (!strcmp(params,PrecitatString(SuborHraca(playerid),"Heslo")))
            {
                Prihlaseny[playerid] = true;
                SpawnPlayer(playerid); //PlayerClassy dúfam máš
                SetPlayerHealth(playerid,PrecitatFloat(SuborHraca(playerid),"HP"));
                GivePlayerMoney(playerid,PrecitatInt(SuborHraca(playerid),"Cash"));
            }
            else return SendClientMessage(playerid,0xFF0000FF,"Zlé heslo.");
        }
        else return SendClientMessage(playerid,0xFF0000FF,"Musíš sa najprv /registrovat");
    }
    return SendClientMessage(playerid,0xFF0000FF,"Musíš použiť /prihlasit heslo");
}

command(registrovat,playerid,params[])
{
    if (!ExistujeSubor(SuborHraca(playerid)) && !isnull(params))
    {
        VytvoritSubor(SuborHraca(playerid));
        ZapisatString(SuborHraca(playerid),"Heslo",params,false);
        ZapisatFloat(SuborHraca(playerid),"HP",float:100.0,false);
        ZapisatInt(SuborHraca(playerid),"Cash",10,false);
        return SendClientMessage(playerid,0xFFFFFFFF,"Použi /prihlasit heslo");
    }
    return SendClientMessage(playerid,0xFF0000FF,"/prihlasit heslo");
}

SuborHraca(playerid)
{
    new Meno[MAX_PLAYER_NAME];
    new string[sizeof(Meno)+6];
    GetPlayerName(playerid,Meno,MAX_PLAYER_NAME);
    format(string,sizeof(string),"%s.ini",Meno);
    return string;
}

 
Ten systém nie je bohviečo, no na získanie nápadu to stačí... :d 
Takisto je to netestované, keďže nemám GTA :d.

Link to comment
Share on other sites

Pěkné ale doporučoval bych vždy při načítaní includu aby include neobsahoval speciální znaky atd.. některé IDE neumí rozpoznat ty naše znaky, nahradí je čtvercem.. :DD

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...