Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

[Pamoka]Enumerators


bebras

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3878 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki visi, jau senokai rašiau pamokėlę, tai štai.

Kaip supratote, pamokos tema yra "enumerators", geriau žinomi kaip "enum", Lietuviškai: skaitliukas(google translate).

Panašu kad žmonės nesupranta kas tai yra ir kaip jie veikia, bet tikiuosi pamokos gale viskas paaiškės...

enum pInfo {
Id,
Pinigai = 2,
AdminLVL = 7,
};
new playerDB[MAX_PLAYERS][pInfo];
printf("%d %d",playerDB[0][Pinigai],playerDB[0][AdminLVL]);

Labai aiškus kodas ar ne? Bet paklausiu klausimo(idėja iš sa-mp.com forumų): kaip manote, kas bus išprint'inta?

Jeigu galvojate kad "2" ir "7" tai puiku,skaitykit toliau kadangi klystate.

Gausime "0" ir "0"....

Taigi, ką iš tikrųjų daro enum? Kaip lietuviškas pavadinimas siūlo kažką su skaitliukais... Jie tiesiog sunumeruoja. Paprastai yra numeruojama nuo 0. Šiuo atveju bus šiektiek kitaip, kadangi aš nurodžiau kitaip...

enum pInfo {
Id, // Numeris 0
Pinigai = 2,  //Numeris 2, numeris 1 buvo praleistas
Kažkas, // Numeris 3
AdminLVL = 7, //Numeris 7
};
new playerDB[MAX_PLAYERS][pInfo];

Toks nurodymas dažniausiai nėra naudingas...Bet, visgi, tai įmanoma.

Enum galima pakeisti su "#define" ar "const", todėl man keista kai žmonės forume aiškina "kurkis enum'ą".

enum pInfo {
Id,
Pinigai = 2,
AdminLVL = 7,
};
new playerDB[MAX_PLAYERS][pInfo];
[AdminLVL]);

//Galima perrašyti taip:
const Id = 0;
const Pinigai = 2;
const AdminLVL = 7;
//Ir tada naudoti taip:
playerDB[0][id] = //
// Rezultatas nesiskirs.
//Yra ir trečias būdas:
#define Id 0
#define Pinigai 2
#define AdminLVL = 7
playerDB[0][Pinigai] = //Tai taipat veiks.

Geriausio būdo jums pasakyti negaliu...."const" yra kintamieji, todėl naudos kažkiek atminties, kur "define" yra pakeičiami "pre procesoriaus", todėl serverio meto jie neturėtų naudoti nieko.

Dabar kai peržvelgiu, gal nelabai ko ir išmokiau...Jei bus klausimų mielai juos atsakysiu.

Nepamirškite, yra pasirinkimas.

Redaguota , nario Dusk
Nuoroda į komentarą
Dalintis per kitą puslapį

google it.

ir tavo pavyzdžiai yra blogi, nes jeigu darysi

enum lol
{
   a,
   b = 2,
   c,
   d = 7
};
new xd[lol];

xd[d] = 5; // viršiji lol, kuris yra lygus 4, nes enume yra 4 elementai, todėl susikuria
new xd[4];
xd[7] = 4;

ir šitas kodas savaime aišku yra neteisingas.

enumus taip pat galima naudoti ir taip

enum lol(+= 5) // lol = 3, nes enume yra 3 elementai
{
   a, // 0
   b, // 0+5 = 5
   c  // 5+5 = 10
};

  • Teigiamai 2
Nuoroda į komentarą
Dalintis per kitą puslapį

google it.

ir tavo pavyzdžiai yra blogi, nes jeigu darysi

enum lol
{
a,
b = 2,
c,
d = 7
};
new xd[lol];

xd[d] = 5; // viršiji lol, kuris yra lygus 4, nes enume yra 4 elementai, todėl susikuria
new xd[4];
xd[7] = 4;

ir šitas kodas savaime aišku yra neteisingas.

enumus taip pat galima naudoti ir taip

enum lol(+= 5) // lol = 3, nes enume yra 3 elementai
{
a, // 0
b, // 0+5 = 5
c // 5+5 = 10
};

Drįsčiau abejoti. Masyvas "xd" dydis bus 8, nesvarbu kad "lol" turi tik 4 elementus.

Todėl su šiuo kodu bus viskas gerai.

xd[d] = 5;

Čia jau darosi įdomu :)

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3878 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...