PARTNERI:
-UPOZORENJE-

Samo registrovani članovi mogu da vide/koriste forum u celini.
Prijavite se ili registrujte nalog na Balkan SA-MP forumu.


Autor Tema: [TuT]YINI - YSI  (Pročitano 2168 puta)

0 članova i 1 gost pregledaju ovu temu.

Van mreže |Pacino

  • Transformer
  • *
  • Poruke: 123
  • Pol: Muškarac
[TuT]YINI - YSI
« poslato: Mart 04, 2011, 23:35:55 posle podne »
YINI[y_ini.inc]

[UPOZORENJE]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 <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!


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!

[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!


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 “ :D
Ovo je moj prvi tut, zato bez zamjerki :P

[
« Poslednja izmena: Mart 05, 2011, 00:33:16 pre podne ProGaming|Pacino »
 

Cobra 11

  • Gost
Odg: [TuT]YINI - YSI
« Odgovor #1 poslato: Mart 04, 2011, 23:55:00 posle podne »
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... ;)


 

Van mreže Dude

Odg: [TuT]YINI - YSI
« Odgovor #2 poslato: Mart 05, 2011, 00:02:29 pre podne »
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...
 

Van mreže |Pacino

  • Transformer
  • *
  • Poruke: 123
  • Pol: Muškarac
Odg: [TuT]YINI - YSI
« Odgovor #3 poslato: Mart 05, 2011, 00:04:41 pre podne »
Citat
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.
 

black_dota

  • Gost
Odg: [TuT]YINI - YSI
« Odgovor #4 poslato: Mart 07, 2011, 08:49:38 pre podne »
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
« Poslednja izmena: Mart 07, 2011, 09:18:44 pre podne [IG]Volim^^Fiziku <3 »
 

Van mreže Joey_

  • High Roller
  • *
  • Poruke: 1539
  • Pol: Muškarac
  • To iterate is human, to recurse divine
Odg: [TuT]YINI - YSI
« Odgovor #5 poslato: Mart 07, 2011, 21:27:33 posle podne »
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;
}

Last nick: Paradox
 

Van mreže .G.h.0.s.T.

  • Transformer
  • *
  • Poruke: 235
  • Pol: Muškarac
  • Jos uvijek ucim skriptati....
Odg: [TuT]YINI - YSI
« Odgovor #6 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
Respect to : BloodMasterмσмαк. ^ [5], Dude, Soprano, Extreme a.k.a. Snooker, LuKsA



Cuj kako, udji ti na server i eto ti bot xD

hahahaha. koji kralj.
 

Van mreže Rotcod

  • Soldier
  • *
  • Poruke: 967
Odg: [TuT]YINI - YSI
« Odgovor #7 poslato: Mart 10, 2011, 21:48:58 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
« Poslednja izmena: Mart 10, 2011, 21:49:35 posle podne eXtreme »
 

Van mreže | MARKO |

  • Homeboy
  • *
  • Poruke: 421
  • Pol: Muškarac
Odg: [TuT]YINI - YSI
« Odgovor #8 poslato: Mart 27, 2011, 18:26:50 posle podne »
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