YINI[y_ini.inc]
[UPOZORENJE]Ovo je jedan od dijelova YSI skupa includova i datoteka koji mozete preuzeti
ovdje (http://www.y-less.com/YSI/YSI_1.0.zip). 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 <YSI\y_ini>
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! CITANJEZamislite 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);
BRISANJETakodjer 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!
[SERVER]
HP = 24.68
pozicija = 1234.2345
[ROLEPLAY]
HP = 100
pozicija = -1234.2334
Ovo omogucuje spremanje vise stvari u jedan file! Citanje: Da biste citali samo vrijednosti pod [SERVER] koristite sintaksu: INI:filename[SERVER](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[tag](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 [tag][naslov]. 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! LATENCIJEUsporedbe 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 “ :D
Ovo je moj prvi tut, zato bez zamjerki :P[
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.. :P
//return 0,a ne returna... :P
to je mala sala...xd
svaka cast...dobar tut... ;)
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...
Citatnije 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.
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[36])
{
new
iniid,
INI:File;
File = INI_Open(iniid);
INI_WriteInt(iniid, "Model", carData[vehicle][model]);
INI_Float(iniid, "XSpawn", carData[vehicle][xspawn]);
INI_Float(iniid, "YSpawn", carData[vehicle][yspawn]);
INI_Float(iniid, "ZSpawn", carData[vehicle][zspawn]);
INI_Float(iniid, "AngleSpawn", carData[vehicle][anglespawn]);
INI_WriteInt(iniid, "Color1", carData[vehicle][col1]);
INI_WriteInt(iniid, "Color2", carData[vehicle][col2]);
INI_WriteInt(iniid, "RespawnTime", carData[vehicle][respawn]);
INI_WriteString(iniid, "Owner", carData[vehicle][owner]);
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
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[vehicle][model] = strval(value);
else if(!strcmp(name, "XSpawn")) carData[vehicle][model] = 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;
}
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
Citat: [NS]Michael poslato Mart 10, 2011, 21:43:54 POSLE PODNE
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 <YSI/y_ini>, i dalje pravis sta hoces :D
PS. Svi su medjusobno povezani zato moras staviti folder :D
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