Pretraga

Pritisnite Enter za pretragu ili Escape za zatvaranje

Zaključano

[TuT]YINI - YSI

Započeo |Pacino
pre 14 godina
3,462
pregleda
9
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
DreamZone|Pacino
Shot Caller
pre 14 godina
YINI[y_ini.inc]

Ovo je jedan od dijelova YSI skupa includova i datoteka koji mozete preuzeti
ovdje. Sam YINI ne mozete sami pronaci, tako da je jedina opcija preuzimanje citave kolekcije includova!


Ovaj sistem citanja/pisanja datoteka je do sada najbrzi koji je ikada kreiran ( kako tvrdi njegov autor - Y_Less).
Preporucljivo ga je koristiti kod spremanja acc-ova, kuca, bizova i drugih vrsta datoteka!

U sljedecem dijelu tutorijala objacnicu vam neke osnovne funkcije YINI sistema, i naravno objasniti zasto bas njega ( Puno je brzi od Dini-a i SII-a ) :

Komande su veoma slicne onima u Dini-u!


Koristenje:

Ako zelite da koristite ovaj sistem na vrhu skripte dodajte (podrazumjeva da ste skinuli ovaj paket i ubacili ga u svoj include folder):
#include 


Dini sistem otvara datoteku svaki put kad trazi neku vrijednost otvara datoteku radi te 1 vrijednosti, pa zatvara datoteku, pa je opet otvara kad bude potrebno... YINI za razliku od Dini-a otvara datoteku jednom i ocita sve vrijednosti odmah, i to je ono sto ga cini drugacijim i boljim!

CITANJE

Zamislite Dini kod:
gA = dini_Get("datoteka.ini", "c");
gB = dini_Get("datoteka.ini", "b");
gC = dini_Get("datoteka.ini", "a");


I ove vrijednosti:
a = 10
b = 67
c = 42


Dini bi otvorio datoteku po 1 za svaku vrijednost ( znaci 3 puta otvara datoteku i 3 puta zatvora i tako iznova... )
Yini bi ipak otvorio ovu datoteku samo jednom i ocitao sve podatke odmah.


Ovako bi izgledao Yini kod:
INI:myini[](name[], value[])
{
   INI_String("a", gA);
   INI_String("b", gB);
   INI_String("c", gC);
   return 0; // returna 0 - obavezno
}


Sintaksa jeste duza, ali se isplati pisati malo duzi kod, pogotovo ako je brzina u pitanju. Yini koristi callback da ucita datoteke umjesto da cita svaku vrijednost pojedinacno ( Dini ).

PISANJE/ SPREMANJE


Nacin pisanja je veoma slican kao kod Dini-a... Ipak dok Dini otvara file za svaku vrijednost posebno, Yini pise vise vrijednosti odjednom!

Yini sintaksa:
new INI:ini = INI_Open("datoteka.ini");
INI_WriteString(ini, "Ime", "Pacino");
INI_WriteInt(ini, "Poeni", pPoeni);
INI_WriteFloat(ini, "HP", health);
INI_Close(ini);


BRISANJE

Takodjer mozete brisati vrijednosti i unose iz datoteke!
new INI:ini = INI_Open("datoteka.ini");
INI_RemoveEntry(ini, "Ime");
INI_Close(ini);


Ovo ce obrisati “Ime” unos iz datoteke! Brisanja mogu biti kombinirana sa pisanjem!
new INI:ini = INI_Open("datoteka.ini");
INI_WriteString(ini, "Ime", "Pacino");
INI_WriteInt(ini, "Poeni", pPoeni);
INI_RemoveEntry(ini, "Ime");
INI_WriteFloat(ini, "HP", health);
INI_Close(ini);


TAGOVI/NASLOVI

Jedna od mogucnosti kojih nema u Dini-u je postavljanje/unosenje naslova u Yini datoteci!


HP = 24.68
pozicija = 1234.2345


HP = 100
pozicija = -1234.2334


Ovo omogucuje spremanje vise stvari u jedan file!

Citanje:

Da biste citali samo vrijednosti pod  koristite sintaksu:
INI:filename(name[], value[])
{
   INI_Float("HP", health);
   if (!strcmp(name, "pozicija") && !sscanf(value, "fff", gX, gY, gZ))
   {
       return;
   }
}

Funkcija:

INI:filename[naslov/tag](name[], value[])
{
}


Pisanje:

Da biste unijeli naslov jednostavno koristite sintaksu:
new INI:ini = INI_Open("datoteka.ini");
INI_SetTag(ini, "SERVER");
INI_WriteString(ini, "Ime", "Pacino");
INI_WriteInt(ini, "Poeni", pPoeni);
INI_Close(ini);


FUNKCIJE:
INI_Int
name[] – Ime INI vrijednosti.
variable – Varijabla koju sprema.

• INI:filename(name[], value[])// Obavezno stavljati name [] i value []
{
   INI_Int("Nivo", pNivo);
}

• INI_Float
name[] - Ime INI vrijednosti.
variable - Varijabla koju treba spremiti.

Sprema Float vrijednost.
• INI_Hex
name[] - Ime INI vrijednosti.
variable - Varijabla koju treba spremiti.

Sprema HEX ( heksadecimalnu ) vrijednost – npr. boja u pawnu.
• INI_Bin
name[] - Ime INI vrijednosti.
variable - Varijabla koju treba spremiti.

Sprema broj u formatu 0b1001101 (binarni).
• INI_Bool
name[] - Ime INI vrijednosti.
variable - Varijabla koju treba spremiti.

Sprema vrijednost kao Boolean (true/false).
• INI_String
name[] - Ime INI vrijednosti.
variable - Varijabla koju treba spremiti.
length – Duzina arraya.

Sprema array u postavljenoj duzini!
• INI_Load
filename[] – Datoteka za ucitavanje.
bool:bExtra – Slanje dodatnih informacija (true/false).
extra – Dodatne informacije za poslati.
bLocal – Poziva lokalne funkcije umjesto globalnih.

Ucitava cijelu datoteku! Sve osim imena datoteke je opcijonalno.
• INI_Open
filename[] – INI datoteka za ucitavanje.

Ucitava .ini datoteku za ucitavanje! Returna sa tag tipom: "INI:".
• INI_Close
INI:file – INI datoteka za zatvoriti.

Zatvara trenutno otvorenu datoteku.
• INI_SetTag
INI:file - INI datoteka za izmjene.
tag[] – Ime taga/naslova u datoteci.

Postavlja . Dodatne vrijednosti se pisu ispod ovoga.
• INI_RemoveEntry
INI:file - INI datoteka za izmjene.
name[] – Za ukloniti.

Uklanja unos iz date datoteke.
• INI_WriteString
INI:file - INI datoteka za izmjene.
name[] – Ime unosa.
data[] - Unos.

Pise string u ini datoteku.
• INI_WriteInt
INI:file - INI datoteka za izmjene.
name[] - Ime unosa.
data – Vrijednost unosa.

Pise integer u trenutnu ini datoteku.

• INI_WriteHex
INI:file - INI datoteka za izmjene.
name[] - Ime unosa.
data - Vrijednost unosa.

Pise na ini datoteku hex (heksadecimalnu) vrijednost – npr. boja: (0x1F182).

• INI_WriteBool
INI:file - INI datoteka za izmjene.
name[] - Ime unosa.
data - Boolean vrijednost.
Pise bool vrijednost na datu ini datoteku.

• INI_WriteBin
INI:file - INI datoteka za izmjene.
name[] - Ime unosa.
data – Vrijednost unosa.

Pise na ini datoteku binarnu vrijednost – npr. (0b1001010).
• INI_WriteFloat
INI:file - INI datoteka za izmjene.
name[] – Ime unosta.
Float:data - Float vrijednost.
accuracy – Brojevi poslije , u vrijednosti.



Ostale funkcije kao: INI_ParseFile ; remoteFormat nisu toliko bitne za vas!

LATENCIJE

Usporedbe latencija izmedju Dini-a, SII i Yini-a. Ovo je ucitavanje preko 40000 vrijednosti srednje velicine!
dini: 63810 – Preko 1 minute
yini: 1564 – Preko 1 SEKUNDE
yini kao dini 1: 6009 – Preko 6 sekundi
yini kao dini 2: 91159 – Oko jedan i pol minut
SII: 52807


Dini – iako veoma popularan je zapravo 45 puta sporiji od Yini-a.

Konacni rezultati:
yini: 1564
dini: 63810
emu : 27297
SII: 52807


Preuzeto sa SA:MP foruma! I da, jesam kopirao sam neke dijelove, ali sam htio da vam pojednostavim neke stvari, posto je to YSI napisao u jeziku “vise matematike “ 😄
Ovo je moj prvi tut, zato bez zamjerki 😛

[
Obrisan korisnik Obrisan korisnik
pre 14 godina
INI:myini[](name[], value[])
{
   INI_String("a", gA);
   INI_String("b", gB);
   INI_String("c", gC);
   return 0; // returna 0 - obavezno
}

Malo sam gledao,evo jedna zamjerka.. 😛
//return 0,a ne returna... 😛
to je mala sala...xd
svaka cast...dobar tut... 😉
Dude
Crime Lord
pre 14 godina
nije YSI pravio, vec Y_Less, a cijeli library se zove YSI(Y_Less's Script Includes)...

drugo, YINI nije najbrzi sistem pisanja u fileove vec je to fwrite na osnovi kojeg i sam YSI pise u filevove pa je naravno sporiji za otprilike nekih 30-40%, barem sam ja dosao do takvih podataka testirajuci...
DreamZone|Pacino
Shot Caller
pre 14 godina
Quote
nije YSI pravio, vec Y_Less, a cijeli library se zove YSI(Y_Less's Script Includes)...

drugo, YINI nije najbrzi sistem pisanja u fileove vec je to fwrite na osnovi kojeg i sam YSI pise u filevove pa je naravno sporiji za otprilike nekih 30-40%, barem sam ja dosao do takvih podataka testirajuci...


Ama znam, nego ja sam rekao najbrzi sistem koji je kreiran, pod tim se ne podrazumjeva fwrite.
Obrisan korisnik Obrisan korisnik
pre 14 godina
Smanji font, izbaci iz center,boje su lose...

6/10 za izgled Tutoriala
7/10 za Tutorial jer si samo preuzeo i preveo

EDIT: Ako se razume neko u Y_Ini, nek mi objasni nesto...
stock SaveVehicle(vehicle, filename)
{
    new
iniid,
INI:File;

File = INI_Open(iniid);

    INI_WriteInt(iniid, "Model", carData);
    INI_Float(iniid, "XSpawn", carData);
    INI_Float(iniid, "YSpawn", carData);
    INI_Float(iniid, "ZSpawn", carData);
    INI_Float(iniid, "AngleSpawn", carData);
    INI_WriteInt(iniid, "Color1", carData);
    INI_WriteInt(iniid, "Color2", carData);
    INI_WriteInt(iniid, "RespawnTime", carData);
    INI_WriteString(iniid, "Owner", carData);
    INI_Close(iniid);
}


Krenuo sam raditi ownership za aute, ok to mi je stock za spremanje tih vozila
E sad me zanima kako da uradim stock za loadvehicle tj da ucitava vozilo, treba mi objasnjenje kako da napravim da cita iz neke datoteke neki red, naprimer taj model i to sve
Johnâ„¢
Godfather
pre 14 godina

INI:filename[](vehicle, name[], value[]) // filename zamijeni s nazivom svoje datoteke ( npr. ako ti datoteka zove vehicle.ini, ti napises vehicle umjesto filename )
{
if(!strcmp(name, "Model")) carData = strval(value);
else if(!strcmp(name, "XSpawn")) carData = floatstr(value);
// Model i XSpawn zamjenis s trazenom informacijom
}

stock LoadVehicle(vehicle)
{
INI_Load("filename.ini", true, vehicle); // Tu ide ime datoteke gdje ti se spremaju informacije
return 1;
}
Mike93
Enforcer
pre 14 godina
skinuo sam YSI skup includova, i sad me zanima koji include moram koristiti, sto se tice spremanja acc-ova i toga?? jer vidim da ih ima puno...Hvala
pavle.bakun
Crime Lord
pre 14 godina
Quote from March 10, 2011, 8:43 pm:
skinuo sam YSI skup includova, i sad me zanima koji include moram koristiti, sto se tice spremanja acc-ova i toga?? jer vidim da ih ima puno...Hvala

Sve zajedno stavis u pawno --> scriptfiles --> stavis taj folder, ucitas gm i dodas #include , i dalje pravis sta hoces 😄

PS. Svi su medjusobno povezani zato moras staviti folder 😄
filip_pnv
Made Man
pre 14 godina
zanima me kako da napravim kod OnPlayerLogina, da mi cita?? napravio sam spremanje, al nekontam kak i citanje. pa ak bi mogao netko objasniti. hvala

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava