Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: PekiBrat poslato Maj 12, 2018, 14:45:28 POSLE PODNE

Naslov: #pragma dynamic
Poruka od: PekiBrat poslato Maj 12, 2018, 14:45:28 POSLE PODNE
Pozdrav, za sta sluzi #pragma dynamic (neki broj), imam to u GameModu(SA mod)?
Naslov: Odg: #pragma dynamic
Poruka od: // xunder poslato Maj 12, 2018, 15:01:05 POSLE PODNE
Postavlja "velicinu" stacka dinamicno na (neki broj).
Bez toga bi (ukoliko koristis neke nepotrebne arraye (ex. velike stringove), nepotrebne varijable itd.) trebao dobiti debug info:

Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

Header size:          x bytes
Code size:          x bytes
Data size:         x bytes
Stack/heap size:      x bytes; estimated max. usage: unknown, due to recursion
Total requirements:x bytes


Ovaj output dobijas i sa parametrom '-d(X)' kada kompajlas tako da se ne zbunis nekada je namjerno upaljen debug.
Uglavnom ako dobijes ovu poruku bez '-d' parametra pri kompajlu, potrudi se da smanjis arraye (jer je to najlaksi nacin da spustis memoriju skripte.
Naslov: Odg: #pragma dynamic
Poruka od: PekiBrat poslato Maj 12, 2018, 15:07:25 POSLE PODNE
Hvala, kad kompajlam imam to, kako da optimiujem to? Moze neki primer za to smanjivanje array-a, vidjao sam neke sitne debugove za array 4 nesti u logu
Naslov: Odg: #pragma dynamic
Poruka od: Nodze poslato Maj 12, 2018, 15:18:56 POSLE PODNE
#Kako koristit Pragmu
Danas ću vam reci par stvari o pragma,kako koristiti #pragma. Koristan je direktiva koja će popraviti širok spektar upozorenja kompajlera.

Upotreba

#pragma je direktiva koja se koristi za promjenu postavki kompajlera. To nije fiksator upozorenja.

Uvijek vidim ljude koji savjetuju druge da koriste #pragmu da uklone upozorenja iz svog kompajla sta vec. Upozorenja su samo utišana - ne magično nestaju.

Umesto toga, naučićete kako da ga izbjegnete. Upozorenja nikada ne bi trebale biti tišine - trebalo bi ih ispraviti na pravi način!

#pragma tabsize
Ovo postavlja veličinu kartice, koja je podrazumevano podešena na 4. Kada ga podesite na nulu, u osnovi dopuštate nečitljivu šifru u vašoj skripti.

Nikada ne bi trebalo da postavljate veličinu tabulatora. Zašto želite da ga postavite? Naučite da pravilno unesete svoj kôd i nećete imati problem.

#pragma dynamic
Ovaj kod:
[pawn]
#pragma dinamička 1000000
[/pawn]
Dinamički postavlja veličinu stega. Bez toga možete nešto dobiti uz linije:
[pawn]
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase

Header size:          19036 bytes
Code size:          1327124 bytes
Data size:         43915204 bytes
Stack/heap size:      16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements:45277748 bytes
[/pawn]
Ovo upozorenje je izazvano retkim nizovima , nepotrebnim veličinama žice i korištenjem dosta podataka.

Pitanje: da li stvarno treba da koristite cijeli taj prostor? Zašto je za HouseInfo dodeljeno 2.000 slotova, kada koristite samo 100 slotova? Postoji mnogo načina da se smanji korištenje podataka.
[pawn]
#define MAX_HOUSES 1000
#define MAX_FURNITURE 100 // Po kući.

novi FurnitureInfo [MAX_HOUSES] [MAX_FURNITURE] [e_FURNITURE_DATA];
[/pawn]
Taj niz je 400 kilobajta velik, ne uključujući podatke popisivača. To nije niÅ¡ta u poreÄ'enju sa danaÅ¡njim standardima, ali je i dalje važno, i postoji način da se to smanji.
Recimo da imamo prosečno 40 komada namještaja po kući. Mi ga lako možemo smanjiti na:
[pawn]
novi FurnitureInfo [MAX_HOUSES * 40] [e_FURNITURE_DATA];
[/pawn]
Naravno, svaka kuća neće sadržati 40 komada namještaja. Veličina ovog polja sada iznosi 40 kilobajta, za razliku od 400 kilobajta iz druge.
ZaključakTL; DR - Ne koristite #pragma da biste popravili upozorenja kompajlera.
Druge verzije Pawno-a koriste različite postavke kompajlera. SA-MP koristi svoja podešavanja, tako da je važno da se prilagodite.

TOLIKO OD MENE, MISLIM DA SAM OBJASNIO NEKE STVARI.


Naslov: Odg: #pragma dynamic
Poruka od: Nodze poslato Maj 12, 2018, 15:29:48 POSLE PODNE
Citat: Nodze poslato Maj 12, 2018, 15:18:56 POSLE PODNE
#Kako koristit Pragmu
Danas ću vam reci par stvari o pragma,kako koristiti #pragma. Koristan je direktiva koja će popraviti širok spektar upozorenja kompajlera.

Upotreba

#pragma je direktiva koja se koristi za promjenu postavki kompajlera. To nije fiksator upozorenja.

Uvijek vidim ljude koji savjetuju druge da koriste #pragmu da uklone upozorenja iz svog kompajla sta vec. Upozorenja su samo utišana - ne magično nestaju.

Umesto toga, naučićete kako da ga izbjegnete. Upozorenja nikada ne bi trebale biti tišine - trebalo bi ih ispraviti na pravi način!

#pragma tabsize
Ovo postavlja veličinu kartice, koja je podrazumevano podešena na 4. Kada ga podesite na nulu, u osnovi dopuštate nečitljivu šifru u vašoj skripti.

Nikada ne bi trebalo da postavljate veličinu tabulatora. Zašto želite da ga postavite? Naučite da pravilno unesete svoj kôd i nećete imati problem.

#pragma dynamic
Ovaj kod:
[pawn]
#pragma dinamička 1000000
[/pawn]
Dinamički postavlja veličinu stega. Bez toga možete nešto dobiti uz linije:
[pawn]
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase

Header size:          19036 bytes
Code size:          1327124 bytes
Data size:         43915204 bytes
Stack/heap size:      16384 bytes; estimated max. usage: unknown, due to recursion
Total requirements:45277748 bytes
[/pawn]
Ovo upozorenje je izazvano retkim nizovima , nepotrebnim veličinama žice i korištenjem dosta podataka.

Pitanje: da li stvarno treba da koristite cijeli taj prostor? Zašto je za HouseInfo dodeljeno 2.000 slotova, kada koristite samo 100 slotova? Postoji mnogo načina da se smanji korištenje podataka.
[pawn]
#define MAX_HOUSES 1000
#define MAX_FURNITURE 100 // Po kući.

novi FurnitureInfo [MAX_HOUSES] [MAX_FURNITURE] [e_FURNITURE_DATA];
[/pawn]
Taj niz je 400 kilobajta velik, ne uključujući podatke popisivača. To nije niÅ¡ta u poreÄ'enju sa danaÅ¡njim standardima, ali je i dalje važno, i postoji način da se to smanji.
Recimo da imamo prosečno 40 komada namještaja po kući. Mi ga lako možemo smanjiti na:
[pawn]
novi FurnitureInfo [MAX_HOUSES * 40] [e_FURNITURE_DATA];
[/pawn]
Naravno, svaka kuća neće sadržati 40 komada namještaja. Veličina ovog polja sada iznosi 40 kilobajta, za razliku od 400 kilobajta iz druge.
ZaključakTL; DR - Ne koristite #pragma da biste popravili upozorenja kompajlera.
Druge verzije Pawno-a koriste različite postavke kompajlera. SA-MP koristi svoja podešavanja, tako da je važno da se prilagodite.

TOLIKO OD MENE, MISLIM DA SAM OBJASNIO NEKE STVARI.
Jos da dodam
#pragma nije napravljen samo da sakrijete upozorenja. TakoÄ'e može biti veoma korisno za druge stvari (kao Å¡to su ctrlchar, pack, codepage ili čak amxram).

Na kraju, debug poruke nisu zapravo upozorenja, ali, kao Å¡to sam rekao, debug poruke. Siguran sam da neću niÅ¡ta naučiti u svom postu - pogotovo ovde - ali možete omogućiti ovakve poruke u svakoj kompilaciji koju obraÄ'ujete kompilacijom -d2 ili -d3 (pomoću pawno-a, kreirajući datoteku pawn.cfg i zapisivanje traženih opcija kompajliranja
Naslov: Odg: #pragma dynamic
Poruka od: PekiBrat poslato Maj 12, 2018, 16:14:13 POSLE PODNE
Hvala, a sta ce se desiti ako obrisem to iz moda?
Naslov: Odg: #pragma dynamic
Poruka od: // xunder poslato Maj 12, 2018, 17:14:22 POSLE PODNE
Vrv je stavleno zbog stack size jer je pojeban, optimizuj skriptu...
Naslov: Odg: #pragma dynamic
Poruka od: PekiBrat poslato Maj 12, 2018, 18:10:28 POSLE PODNE
Okej, a sta ce se desiti ako obrisem to?
Naslov: Odg: #pragma dynamic
Poruka od: Nodze poslato Maj 12, 2018, 21:43:43 POSLE PODNE
Izbacit Ce ti mnogo errora eto sta Ce bit, optimizmu skriptu kako je @ksunder rekao
Naslov: Odg: #pragma dynamic
Poruka od: PekiBrat poslato Maj 12, 2018, 23:50:58 POSLE PODNE
Nije izbacio ni jedan error kad sm skinuo
Naslov: Odg: #pragma dynamic
Poruka od: PekiBrat poslato Maj 14, 2018, 00:34:42 PRE PODNE
Bump, zna neko?
Naslov: Odg: #pragma dynamic
Poruka od: // xunder poslato Maj 14, 2018, 21:38:12 POSLE PODNE
Onda nemas problema sa stack/heap sizeom
Naslov: Odg: #pragma dynamic
Poruka od: PekiBrat poslato Maj 15, 2018, 02:21:43 PRE PODNE
Hvala puno, lock