Jump to content

návod Pracujeme s dini


Mattsy

Recommended Posts

Veľa ľudí používa pre registráciu alebo ukladanie vecí dudb. Script je však zložitý a záťažový na server. A ak chete viec ukladaní musíte si to prepísať v include čo je veľká nevýhoda. DracoBlue nám však vytvoril script dini, ktorý je jednduchší a menej záťažový.
Preto si v tomto návode dini viac priblížime a pozrieme sa na jeho funkcie.

Najprv si vymenujeme zákaldné funckie a potom ich použitie v scripte.
============================================================
Dini stiahnete tu:

http://bugsy.707.cz/Dini.inc

Základné funkcie:

dini_Exists(file[]); // Používa sa pri kontrole či súbor existuje
dini_Create(file[]); // Používa sa na vytvorenie súboru
dini_Remove(file[]); // Používa sa na vymazanie súboru

Funkcie pre uloženie:

dini_Set(file[], oznacenie[], hodnota[]); // Slúži nám na ukladanie stringu
dini_IntSet(file[], oznacenie[],hodnota); // Slúži na ukladanie integeru
dini_FloatSet(file[], oznacenie[],Float:hodnota); // Slúži na ukladanie Floatu teda desatinných čísel
dini_BoolSet(file[], oznacenie[],hodnota); //Slúži na ukladanie booleanu( true, false )

Funkcie pre načítavanie:

dini_Get(file[], oznacenie[]); // Slúži na načítanie stringu
dinit_Int(file[], oznacenie[]); // Slúži na načítanie integeru
dini_Float(file[], oznacenie[]); // Slúži na načítanie floatu
dini_Bool(file[], oznacenie[]); // Slúži na načítanie boolu

============================================================

Ukladanie

Teraz si ukážeme názorné ukladanie Stringu, integeru, floatu a boolu v jednom.

Ako prvé si určíme cestu k súboru:

new cesta[50];
format(cesta, sizeof(cesta), "/Users/%.sav", Meno(playerid));// Budeme to ukladať do priečinku Users v Scriptfiles, prípomonu si možte zmeniť

Teraz zistíme či hráčov účet už existuje:

if(!dini_Exists(cesta))// ak hráčov súbor neexistuje( preto tam je ! )
{
dini_Create(cesta);// tak ho vytvoríme
}
else// ale ak existuje
{
// Tu pridáme ukladanie
}

Samotné ukladanie:

new Float:X, Float:Y, Float:Z;// nadefinujeme si premeny do ktorých budeme ukladať hráčovu pozíciu ktorú neskor uložíme
GetPlayerPos(playerid, X, Y, Z);// zistíme si hráčovu pozíciu a následne ju zapíšeme do premien
dini_Set(cesta, "Meno", Meno(playerid)); // Do súbora sa vytvorí položka "Meno=" a za "=" sa nám uloží hráčove meno ( na takomto princípe sa ukaldá heslo v registrácii )
dini_IntSet(cesta, "Povolanie", povolanie[playerid]); // Ako druhá položka z vrchu sa nám vytvorí "Povolanie", kde sa nám uloží hráčove povolanie podľa ID povolania
dini_FloatSet(cesta, "X", X);// Zapíšeme hráčovu súradnicu X
dini_FloatSet(cesta, "Y", Z);// Zapíšeme hráčovu súradnicu Y
dini_FloatSet(cesta, "Y", Z);// Zapíšeme hráčovu súradnicu Z
dini_BoolSet(cesta, "Vodicak", vodicak[playerid]);// Uložíme si hráčov vodičák ( bool je na preukazy lepšie )

Takže sme sa dostali k tomuto:

new cesta[50];
format(cesta, sizeof(cesta), "/Users/%s.sav", Meno(playerid));
if(!dini_Exists(cesta))
{
dini_Create(cesta);
}
else
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
dini_Set(cesta, "Meno", Meno(playerid));
dini_IntSet(cesta, "Povolanie", povolanie[playerid]);
dini_FloatSet(cesta, "X", X);
dini_FloatSet(cesta, "Y", Z);
dini_FloatSet(cesta, "Y", Z);
dini_BoolSet(cesta, "Vodicak", vodicak[playerid]);
}

============================================================

Načítavanie

Tu si ukážeme ako načítať hráčove štatistiky ktorých ukladanie sme si ukázali vyššie.

Znova si určíme cestu k súboru:

new cesta[50], Float:X, Float:Y, Float:Z;// definícia stringu a floatov do ktorých uložíme pozíciu
format(cesta, sizeof(cesta), "/Uses/%s.sav", Meno(playerid));// cesta k hráčovemu
súboru ( musí byť pri každom načítavaní/ukladaní )

Samotné načítavanie:

Meno(playerid) = dini_Get(cesta, "Meno");// načítame hráčove meno zo súboru
X = dini_Float(cesta, "X");// do premeny zapíšeme súradnicu X ktorú sme si uložili do súboru
Y = dini_Float(cesta, "Y");// do premeny zapíšeme súradnicu Y ktorú sme si uložili do súboru
Z = dini_Float(cesta, "Z");// do premeny zapíšeme súradnicu Z ktorú sme si uložili do súboru
SetPlayerPos(playerid, X, Y, Z);// nastavíme hráčovu pozíciu ( toto by išlo aj inak, ale napísal som vám jednoduchší sposob )
vodicak[playerid] = dini_Bool(cesta, "Vodicak");// Zo súboru načítame hráčovi vodičák

Celkovo to bude vyzerať takto:

new cesta[50];
format(cesta, sizeof(cesta), "/Users/%s.sav", Meno(playerid));
Meno(playerid) = dini_Get(cesta, "Meno");
X = dini_Float(cesta, "X");
Y = dini_Float(cesta, "Y");
Z = dini_Float(cesta, "Z");
SetPlayerPos(playerid, X, Y, Z);
vodicak[playerid] = dini_Bool(cesta, "Vodicak");

Tak to by bolo asi všetko, písal som to z hlavy a dúfam že vám to pomože a že odteraz už budete dini chápať :)

V prípade nejakých nejasností píšte do topicu, nie do SZ !

 

Návod označen jako platný

Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný

  • Líbí se mi to! (+1) 2
Link to comment
Share on other sites

new cesta[50], Float:X, Float:Y, Float:Z;;

Zle :d

 

..

ale inak good tut :)

 

jaj díky, mám tam dvakrát stredník, som si nevšimol ;)

 

 

a ďakujem za hodnotenia :)

 

EDIT: opravené ;)

Link to comment
Share on other sites

Moc povedný tut. Když jsem ho kdysi potřeboval tak tu nebyl :d inu, aspoň to pomůže nikomu jinému ;) . Je tu konečně nějakej s DINI formátováním co já používám ;) .

 

Děkuju 10/10

Link to comment
Share on other sites

 

ja som nerobil registráciu...ale čisto len dini, pretože pri registrácii sa to nenaučíš

 

ja som sa pýtal či ho urobiť...každý povedal áno

Link to comment
Share on other sites

 

QWER je zase pán chytrej tak jo pro tebe to udělám.

 

http://pawno.cz/viewtopic.php?f=8&t=7756&hilit=dini - Tohle je registrace (žádnej float, bool a ni "ň" )

http://pawno.cz/viewtopic.php?f=8&t=14070&hilit=dini - opět bez float, a bool

http://pawno.cz/viewtopic.php?f=8&t=73&hilit=dini - no comment

http://pawno.cz/viewtopic.php?f=8&t=7754&hilit=dini - a tohle je přes fopen a to jsem nechtěl :d .

 

Takže nic takového jako tento jedinečný tut tu není ! Když nevíš o čem je řeč tak se do toho nese* .

Link to comment
Share on other sites

lol...

 

http://pawno.cz/viewtopic.php?f=8&t=7754&hilit=dini - a tohle je přes fopen a to jsem nechtěl .

 

toto si byť tebou prečítam, aspoň pochopíš očom tento návod je

 

To umím zase nečteš, já jen že jsem to nemohl najít tak před 2 měsícemna když jsem to potřeboval! Fopen a fclose se mi také hodí a umím to :d . Di se léčit :d :D :d

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

Take vas naucim pouzivat dini.. Pouzivani dini je rychlejsi psani a snadnejsi k pochopeni..

 

Takze nejdrive se pustime do funkci fread, fwrite, fopen a fclose..

dini_Exists(filename[]) Zjisti jestli existuje zvoleny soubor...

dini_Remove(filename[]) Smaze zadany soubor.. Nic zvlastniho

dini_Create(filename[]) Vytvori zadany soubor..

dini_Set(filename[],key[],value[]) Zapise STRING do souboru.. Ale muzete psat i cisla..

dini_IntSet(filename[],key[],value) Zapise INTEGER do souboru.. Proto jen inty

promena = dini_Int(filename[],key[]) Precte INTEGER ze souboru.. Nelze pouzit na string..

dini_FloatSet(filename[],key[],Float:value) Zapise FLOAT do souboru..

Float:promena = dini_Float(filename[],key[]) Precte FLOAT ze souboru..

 

dini_Get(filename[],key[]) Precte STRING ze souboru.. Proto ukladat do stringu

 

 

 

btw u dini tu je opravený bool

stock dini_Bool(filename[],key[]) {

if(strcmp("true", dini_Get(filename,key), true) == 0){

return true;

}else{

return false;

}

return strval(dini_Get(filename,key));

}

 

stock dini_BoolSet(filename[],key[],value) {

new valuestring[10];

if(value){

format(valuestring,10,"true");

}else{

format(valuestring,10,"false");

}

return dini_Set(filename,key,valuestring);

}

Link to comment
Share on other sites

v prvom rade si zisti čo je string(text) alebo integer(číslo) alebo float(desatinné číslo) a potom si to uložíš podľa tutu, zmeníš premenu a hodnotu do ktorej sa to bude ukladať

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...