hlmod.hu https://hlmod.hu/ |
|
Általános kérdések https://hlmod.hu/viewtopic.php?f=9&t=29843 |
Oldal: 1 / 1 |
Szerző: | Vieni [ 2019.04.12. 13:20 ] |
Hozzászólás témája: | Általános kérdések |
Sziasztok, Volna pár kérdésem: 1. Mi a külömbség a static és a new között/melyiket mikor érdemesebb használni? 2. Ha két lehetőségünk van, érdemesebb if-et vagy switch-et használni? Ha az if érdemesebb, hány lehetőségtől preferálandó a switch? Gondolok itt pl erre: Kód: if(x==2) Kód: switch(x) 3. Mi egyenlő a halmazoknál lévő "elem" kifejezéssel? Tehát, tegyük fel, hogy van egy halmazunk, benne 5 szám, akkor hogy írjuk meg, hogy ha x eleme annak a halmaznak akkor történjen valami? 4. Ügye van a switch-nél egy felsorolás, ( pl. case 1..9: ) alkalmazható ez, vagy bármi hasonló máshol, a for/while leszámításával? Elsősorban nekem az index jutott eszembe, ( [1..9] ez nem egy működő dolog ügyebár ) de akár ez halmazoknál működhet valamilyen módon? ( if(x */ide jönne az elem kifejezés*/ (1..9)) ) 5. Mikor érdemes public-ot rakni és miért? Sokszor volt, hogy nem használtam egy-két helyen, de érdekelne, hogy mi a külömbség. 6. Érdemesebb sok, kicsi, incekkel összekötött plugint csinálni vagy egy nagyot, ami akár elérheti az 5-6ezer sort? Az, hogy ilyen módon kötöm össze a pluginokat nem növeli a ram/memória használatot? |
Szerző: | Dooz [ 2019.04.12. 15:32 ] |
Hozzászólás témája: | Re: Általános kérdések |
Helló. Keresgéltem/utána néztem a dolgoknak, illetve felhasználtam az eddigi tudásom: 1. Static vs new A new minden alkalommal létrehoz egy változót a memóriában, amikor pl. egy függvény meghívás történik, ezzel ellentétben a static változót csak egyszer hozza létre a memóriában, amikor elsőnek meghívódik pl. a függvény. AlliedModders-en találtam: If it isn't being called more than 1 time per second the entire time the server is running, just use new. Magyarul: Ha nem hívodik meg több mint egyszer egy másodperc alatt a static, akkor használj new-t. 2. Switch vs if Ha több mint 5 case-ed van, akkor használj switch-t, ellenkező esetben if-t. 3. Elem Tudtom szerint nincs olyan utasítás, amivel egyből le tudod kérni, hogy egy elem benne van-e a halmazba. Én for ciklussal szoktam megoldani:
Lehet nem túl optimális, de jelenleg más megoldást nem találtam rá. 4. Switch Mivel növekvő sorrendbe vannak az index-ek az (1-9) intevallumban, akkor írhatod így:
5. Normál/Public/Stock a. Normál: A típus nélküli függvényeket akkor érdemes használni, amikor olyan függvényt szeretnél, amit más plugin nem tud meghívni. Pl.
b. Public: A public függvényeket bárki meghívhajta, azaz más pluginok vagy maga az AMXX. Talán kicsit több CPU-t használnak. (AlliedModders) 6. Native Ezt pontosan nem tudom, mivel még nem teszteltem le, hogy melyik optimálisabb. Szerintem nagy különbség nem lehet a kettő között. Inkább a rosszul megírt plugin fogja növelni a használatot. Én jelenleg is több plugint kötök össze include segítségével, amelyeket nem akarom belezsúfolni egy pluginba, hogy utána zavarjanak. Szerintem így átláthatóbb. Példa: A Regisztrációs Rendszerem külön pluginba van, amelyből olyan dolgokat, hogy be van-e jelentkezve a játékos, a felhasználó azonosítóját és hasonlókat include (native) segítségével kérem le. ------ Ha valami hülyeséget írtam, akkor megkérlek javítsatok ki, illetve ha valami nem világos/nem írtam le elég érthetően, akkor szólj/szóljatok és újrafogalmazom. Felhasznált odalak: Katt. Katt. Katt. Katt. |
Szerző: | BeepBeep [ 2019.04.17. 18:16 ] |
Hozzászólás témája: | Re: Általános kérdések |
Nagyszerű kérdések, nagyszerű válaszok! Látjátok feleim? 1. Mi a külömbség a static és a new között/melyiket mikor érdemesebb használni? Azon kívül, amit Dooz kolléga is leírt, hozzátenném, hogy a new dinamikus, míg a static a nevében is benne van, statikus, nem változó, egy meghatározott értéket szokás tárolni benne, amit utána nem módosítunk. 2. Ha két lehetőségünk van, érdemesebb if-et vagy switch-et használni? Ha az if érdemesebb, hány lehetőségtől preferálandó a switch? Itt sajnos nem érthetek egyet Doozzal. Nem feltétlenül darabszám kérdése a felhasználás módja. A vizsgálandó elem értékétől is függ, illetve hogy olvasható legyen a kód. Közelítsük meg érték szerint a témát, mivel ez a lényege. Case feltételt akkor szokás használni, ha pontosan tudjuk, mit kell vizsgálnunk. Kód: switch(var) { Ez if-fel is megoldható persze: Kód: if(var == 0 || var == 1) Melyik a rövidebb, melyik a gyorsabb? Na látod. Azonban nem mindig érdemes esetvizsgálatot végrehajtani, főleg akkor nem, amikor több esetben is ugyan azt akarjuk csinálni. Itt van még egy példa. Az értékeket pontosan tudjuk. Kód: switch(var) { Kód: if(var == 0 || var == 1) /*vagy ha tartományban akarunk gondolkodni, akkor*/ if(0 <= var <= 1) Melyik a szebb, könnyebben olvashatóbb? Na látod. Szerintem is a második. Szóval ez a kérdés nagyban függ a megoldandó feladattól. Nincs konkrét szabály, mikor mit kell használni. Mikor mit érdemes viszont van. Az utolsó példánál maradjunk. Mit csinál a switch? Kód: Az érték 0? Nem. Tovább. Mit csinál az if? Kód: Az érték 0 vagy 1? Nem. Tovább. VAGY, amit írtam. Az érték 0-val nagyobb vagy egyenlő és 1-nél kisebb vagy egyenlő? Nem. Tovább. Melyik használ több erőforrást? Szerintem is az első. Ez rossz. Törekedjünk a minél gyorsabb megvalósításra. Remélem így már átlátod és te is tudsz dönteni. 3. Mi egyenlő a halmazoknál lévő "elem" kifejezéssel? Tehát, tegyük fel, hogy van egy halmazunk, benne 5 szám, akkor hogy írjuk meg, hogy ha x eleme annak a halmaznak akkor történjen valami? Dooooooooooooooooooz. Keresés progtétel. While ciklus és ellenőrzés. Kód: new i = 0; // Definiáljuk a ciklusváltozót. Azonban ha listát, array-t használunk, arra van függvény: ArrayFindValue vagy ArrayFindString Kód: ArrayFindValue(Array:which, any:item); Ennek felhasználására egy példa: Kód: new i = ArrayFindValue(Array, 5); Remélem ez is hasznodra válik. Progtételt tessék megtanulni! 4. Ügye van a switch-nél egy felsorolás, ( pl. case 1..9: ) alkalmazható ez, vagy bármi hasonló máshol, a for/while leszámításával? Elsősorban nekem az index jutott eszembe, ( [1..9] ez nem egy működő dolog ügyebár ) de akár ez halmazoknál működhet valamilyen módon? ( if(x */ide jönne az elem kifejezés*/ (1..9)) ) While-ban nem használhatsz esetvizsgálatra ciklust. Ezért jobb tartományban gondolkodni, amit fentebb is leírtam, lásd 2. kérdést. 5. Mikor érdemes public-ot rakni és miért? Sokszor volt, hogy nem használtam egy-két helyen, de érdekelne, hogy mi a külömbség. Helyes Dooz válasza. Habár a CPU használat ennél az esetnél elhanyagolható. Kivéve ha egy másik plugin végtelen ciklusban hivatkozik a függvényre. Az para. 6. Érdemesebb sok, kicsi, incekkel összekötött plugint csinálni vagy egy nagyot, ami akár elérheti az 5-6ezer sort? Az, hogy ilyen módon kötöm össze a pluginokat nem növeli a ram/memória használatot? Sok kicsi sokra megy. Jobban átláthatóbb a kód, te is jobban eligazodsz egy rendesen felépített struktúrán, mint egy tízezer soros kódon. Az erőforrás használata attól függ, hogy írják meg a kódot. |
Oldal: 1 / 1 | Minden időpont UTC+02:00 időzóna szerinti |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |