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 = 42Dini 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: 52807Dini – iako veoma popularan je zapravo 45 puta sporiji od Yini-a.
Konacni rezultati:
yini: 1564
dini: 63810
emu : 27297
SII: 52807Preuzeto 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 😛
[