hlmod.hu https://hlmod.hu/ |
|
AmxModX Alapozó 04. - Tömbök, Stringek, Többdimenziós tömbök https://hlmod.hu/viewtopic.php?f=55&t=3408 |
Oldal: 1 / 3 |
Szerző: | Metal [ 2012.02.12. 00:24 ] |
Hozzászólás témája: | AmxModX Alapozó 04. - Tömbök, Stringek, Többdimenziós tömbök |
Tömbök, Stringek, Többdimenziós tömbök Tömbök A tömb azonos típusú adatok halmaza, amelyek a memóriában folytonosan helyezkednek el. A tömb elemeire a tömb nevével és az indexelő operátorral ([]) hivatkozhatunk. A tömböket nullától indexeljük. A fordító nem ellenőrzi a tömbindexeket, ezért hibás indexeléssel is lefordul a program, de futás közben ez több problémát is okozhat. Egyrészt felülírhatjuk a memóriában előtte vagy utána lévő adatainkat, másrészt akár olyan memóriaterületre próbálhatunk meg írni (vagy onnan olvasni), amely nem a pluginhoz tartozik, ekkor az AMX Mod X megszakítja a plugin futását és ezt az error logba jelzi. Kód:
// Fordítási direktívával (lásd később) Kód:
Lehetőség van a tömb feltöltésére a deklarálás mellett. Az alábbi példa demonstrálja, miként tehetjük meg ezt: Kód:
Természetesen Float és Boolean típusú tömb is létrehozható, értékadással megspékelve Kód:
Stringek Észrevehetted, hogy a legfontosabb adattípus kihagytam: a karakterek. A Pawn nyelvben a karaktereket a számok reprezentálják, míg a stringeket a karakterek tömbje. Példák: Kód:
A most következő kód ugyanazt fogja csinálni, mint az előző. Hosszabb, és a több véthető hibalehetőség miatt nem ajánlott. Kód:
Az alábbi sorok kerülendők, mivel lehet, hogy lefordulnak, de futási időben könnyen túlcsordulási hibákat okozhatnak Kód:
További példák: Kód:
Többdimenziós tömbök A Pawn lehetőséget nyújt többdimenziós tömbök létrehozására. A titok annyi, hogy több [x] literálokat pakolunk a tömbünkhöz, s így egy n dimenziós tömböt kaphatunk. A most következő sorok taglalják ennek előnyeit és működését, a példákat kétdimenziós tömbbel mutatom be Kétdimenziós tömb Általában ilyen típusú tömböket használunk, ugyanis ezzel reprezentálhatunk egy táblázatot, ahol az első "dimenzió" határozza meg a sort, míg a második az oszlopot. (Szokás nxm es Mátrixnak is nevezni) Kód:
Példa egy 3x3as Mátrixra Kód:
Fontos megjegyezni, hogy néhány egydimenziós tömbökre implementál függvény nem működik a többdimenziós tömbökre. Kód:
Ekkor a BigArray[2] tartalmazza a 2. egydimenziós tömbünket {7,8,9}. Természetesen van arra lehetőség, hogy saját függvényt implementáljunk a kétdimenziós tömbökre. Például: Kód:
Kétdimenziós tömbben is lehetséges a stringek tárolása: Kód:
Ekkor a StringList az alábbi adatot tartalmazza: 0 1 2 3 4 5 6 0 H e l l o \0 1 m y \0 2 f r i e n d \0 Adatok összehasonlítása hasonlóan működik, mint az egydimenziós társaiknál. Kód:
Updated: 2012.02.13 |
Szerző: | kiki [ 2012.02.12. 07:21 ] |
Hozzászólás témája: | Re: AmxModX Alapozó 04. - Tömbök, Stringek, Többdimenziós tö |
Jólett:D |
Szerző: | Metal [ 2012.02.13. 09:10 ] |
Hozzászólás témája: | Re: AmxModX Alapozó 04. - Tömbök, Stringek, Többdimenziós tö |
Up! Volt benne 1-2 hiba s 1-2 dolgot átírtam/rendeztem. Jelezzétek, ha valami nem tiszta, s kifejtem, ha valóban szükséges. |
Szerző: | HunGamer [ 2012.02.13. 15:52 ] |
Hozzászólás témája: | Re: AmxModX Alapozó 04. - Tömbök, Stringek, Többdimenziós tö |
Metal írta: Up! Volt benne 1-2 hiba s 1-2 dolgot átírtam/rendeztem. Jelezzétek, ha valami nem tiszta, s kifejtem, ha valóban szükséges. Hát nekem lenne egy kérdésem: A tömb 1 elemén csak 1 karakter lehet? Vagy ez is helyes: Kód: new Players[32] |
Szerző: | Metal [ 2012.02.13. 16:01 ] |
Hozzászólás témája: | Re: AmxModX Alapozó 04. - Tömbök, Stringek, Többdimenziós tö |
Természetesen helyes. A vátozók számokat táronak, érdektelen milyen hosszúak. Karakterek esetén csak EGY karaktert tárol: Kód:
Karakterekből azért csak egyet tárolhatunk, mert maga a karaktert egy szám ( a karakter ASCII kódja) reprezentálja. Azaz Kód: new a=77esetén Kód: a == b igaz (egyenlőek) HunGamer írta: Metal írta: Up! Volt benne 1-2 hiba s 1-2 dolgot átírtam/rendeztem. Jelezzétek, ha valami nem tiszta, s kifejtem, ha valóban szükséges. Hát nekem lenne egy kérdésem: A tömb 1 elemén csak 1 karakter lehet? Vagy ez is helyes: Kód: new Players[32] |
Szerző: | HunGamer [ 2012.02.13. 16:14 ] |
Hozzászólás témája: | Re: AmxModX Alapozó 04. - Tömbök, Stringek, Többdimenziós tö |
Még két kérdés. Ha így használom: Kód: new Players[32] Tudom hogy mire kell, hogy kell használni az ,id'-t de nem tudom, hogy ez mi. A játékos neve, esetleg egy ,,azonosíto" szám. Szóval, hogy miez? 2. Lehetséges-e hogy játékon belül megváltozik valakinek az id-je vagy ez állandó? |
Szerző: | IrOn [ 2012.02.13. 16:15 ] |
Hozzászólás témája: | Re: AmxModX Alapozó 04. - Tömbök, Stringek, Többdimenziós tö |
HunGamer írta: Még két kérdés. Ha így használom: Kód: new Players[32] Tudom hogy mire kell, hogy kell használni az ,id'-t de nem tudom, hogy ez mi. A játékos neve, esetleg egy ,,azonosíto" szám. Szóval, hogy miez? 2. Lehetséges-e hogy játékon belül megváltozik valakinek az id-je vagy ez állandó? 1-32 -ig vannak ID-k mivel 1 szerver max 32 slot lehet az id változhat ha újracsatlakozik, azthiszem |
Szerző: | kiki [ 2012.02.13. 17:12 ] |
Hozzászólás témája: | Re: AmxModX Alapozó 04. - Tömbök, Stringek, Többdimenziós tö |
id = index ez az a játékos akin a funkciot vegre akarod halytani, vagy akin vegre hajtodik! |
Szerző: | Metal [ 2012.02.13. 18:39 ] |
Hozzászólás témája: | Re: AmxModX Alapozó 04. - Tömbök, Stringek, Többdimenziós tö |
1) Ez azt jelenti, hogy a Players tömb id.eik elemének 15öt adsz értékül. Az id helyett lehet más is, akár lócitrom, mivel az UGYANOLYAN változó, mint bármelyik más változó. Az alábbi két kód (ciklus) futása után ugyanazok az elemek lesznek a tömbökben: Kód: new Players[10], Players2[10] mind a 2 kód feltölti a tömbök elemeit 0-tól 18ig 2-esével haladva tehát végeredményben: Kód: for (new i=0; i<10; i++) 2) Mikor egy játékos felcsatlakozik, akkor automatikusan kap egy idt, és midnig az első legkisebb nem foglalt azonosítót kapja meg például: 1) Matyi 2) Sanyi 5) Béla 6) Árpi Árpi lelép 1) Matyi 2) Sanyi 5) Béla Zoli fellép: 1) Matyi 2) Sanyi 3) Zoli 5) Béla Amit idt kaptak az nem változik HunGamer írta: Még két kérdés. Ha így használom:
Kód: new Players[32] Tudom hogy mire kell, hogy kell használni az ,id'-t de nem tudom, hogy ez mi. A játékos neve, esetleg egy ,,azonosíto" szám. Szóval, hogy miez? 2. Lehetséges-e hogy játékon belül megváltozik valakinek az id-je vagy ez állandó? |
Szerző: | Metal [ 2012.02.13. 18:49 ] |
Hozzászólás témája: | Re: AmxModX Alapozó 04. - Tömbök, Stringek, Többdimenziós tö |
WRONG! HAJT! Igen, mikor fellép egy játékos, kap egy azonosítót amit idnek szoktak nevezni, de mint minden változó, utalhatsz rá "vizbicikli" névvel is, de az alap konvenció az, hogy id, vagy index-ként utalunk rá. Még egy fontos megjegyzés: Ha bárhol látsz egy idt, az NEM feltétlenül azt jelenti, hogy az játékos id! Az csak egy változó, - ami lehet játékos id is - a kód fogja neked megmutatni, mire s hol használja fel. kiki írta: id = index ez az a játékos akin a funkciot vegre akarod halytani, vagy akin vegre hajtodik!
|
Oldal: 1 / 3 | Minden időpont UTC+02:00 időzóna szerinti |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |