erőforrásnál:
- 256 cellás tömbök
Chat max 128 karaktert jelenít meg, szóval nagyrészt felesleges!
De pl amikor 8-10 karaktert raknak bele oda is 256 cellát hoznak létre, mert úgy szokták meg.
pl:
format(string,sizeof(string),\"%s kinyitotta a kocsiját. (Jármű: %d)\",name,vehid);
\" kinyitotta a kocsiját. (Jármű: )\" = 33
name = 20 (max hosszal számolva!)
vid = 4 (2000-es limit mellett!)
szöveg végi \\0 = 1
szóval: 33+20+4+1=58
new string[256];
//helyett:
new string[58];
Annyi cellát hoznék létre amennyire tényleg szükség van.
- 30-50-100 slotos szerveren 1000x futó ciklusok (MAX_PLAYERS)
Elég lenne egy 30 slotos szerveren 0-29-ig futni, de a legjobb az lenne ha mondjuk 10 játékos van fent (pl: 0-9 ID akkor 9-ig futna, ha 0-13 között vannak az ID-k akkor 13-ig, szóval a legnagyobb ID-jú játékosig)
Újra kell definiálni a MAX_PLAYERS-t SLOT számra és a mód/script indulásnál ellenőrizni, hogy a slot nagyobb e mint az új érték...
És itt megemlíteném még a MAX_VEHICLES és a többi sokáig futó ciklust...házaknál, üzleteknél...
Ezeknél is el lehetne tárolni az utolsó ID-t...
Én pl amibe utoljára belekezdtem mód abban már az első és az utolsó ID + az első \"lyukas\" ID is el volt tárolva, hogy sebességet nyerjek...persze memóriát foglalok, de a processzort kímélem...
- Több azonos ciklus egymás alatt, nem végig gondolt kód
Arra gondolok, hogy 3x egymás alatt végig megy az összes játékoson...GFRP-ben találkoztam olyan kóddal, hogy 3-4x volt egymás alatt az összes játékoson végig haladó ciklus
Egy ciklusba kellene rakni
- Sok időzítő
Ez egyértelmű szerintem, ami sokszor kiváltja, hogy pl OnPlayerConnect alatt indul időzítő a játékosnak, DE SEHOL nincs KillTimer...tehát minden loginnál SetTimer, fut a szerver leállásáig...
Itt vagy KillTimer-el kell leállítani az időzítőt, vagy nem kell annyit indítani!
- Több if egymás alatt return nélkül
Parancsnál ha valaki ezt rosszul használja akkor végig ellenőrzi az összes parancsot minden parancs beírásánál
if(...)
{
// kód, végén nincs return!
}
if(...)
{
// kód, végén nincs return!
}
if(...)
{
// kód, végén nincs return!
}
Van amikor erre van szükség! Csak sokszor mondjuk dialog id-kat látok így.
Itt else if-et ajánlom, vagy a return használatát
- Többször lekérdezett adat
Mondjuk van egy CountPlayerHouses függvény ami végig megy az összes házon és összeszámolja a játékos házainak számát
for(new i = 0; i < CountPlayerHouses(playerid); i++)
Legyen mondjuk 500 ház és legyen a játékosnak 3 háza: 1500x fut le a kód
Ciklus előtt kérdezzük le:
new count = CountPlayerHouses(playerid);
for(new i = 0; i < count; i++)
Ez még fokozható, ha végig megy 100 játékoson és mellette átlagban lefut 500x a CountPlayerHouses
- Felesleges kódok
Tegnap egy példában olyannal találkoztam, hogy GetPlayerName-el lekérdezte a játékos nevét egy tömbbe aztán a következő sorban format-al felülírta, de nem használta a saját értékét a formázás során, szóval feleslegesen kérte le a nevet.
Ezeket mellőzni
- SQL queryk
Bonyolult SQL query-k amiket egyszerűbben is meglehetne oldani.
Többször lekérdezni az adatokat, akár egy táblából le lehetne kérdezni egy query-ben azt 4 helyen kérdezi le külön szedve.
Query-k optimalizálása ajánlott
Hirtelen ezek jutottak eszembe...
\"jó lesz az úgy\" hozzáállás nem magyar mentalitású! a hanyag, vagy épp másra koncentráló programozók is vétenek ilyeneket...például egy német scripter ismerősöm csinált egy HQ-t és a parancsot úgy csinálta meg, hogy mindenki tudta nyitni a kaput, nem csak a tulajok...azért így, mert nem akart 20mp rászánni arra, hogy beírja feltételnek, hogy a adminok és a tulajok tudják nyitni...
Régen GFRP-ben volt a \"Date Hack\", amikor regisztrációnál \"99/99/999999999\" szöveggel hazalehetett vágni az egész szervert. Ma már nem hiszem, hogy 1%-nál több szerveren jelen lenne ez a bug. Ez talán nem hanyagságból, hanem hozzá nem értésből, vagy nem számításból következett be. Sajnos a GFRP tele van szeméttel. Én személy szerint sok rossz szokást vettem át onnan, amiknek nagy részét szerencsére már kisöpörtem az agyamból...tanulni jó volt szép volt, de egy bizonyos szint után elég csúnya az a kód
Még a német scripter példájához hasonlókat is találtam már és én magam is vétettem hasonló hibákat. Ez azonnal nem mindig akkora probléma, viszont később nagy gondot okozhat...
Sokan (én is szokszor
) az új fejlesztésekre hajtanak és nem javítják a bugokat.
Scripter: óóóó de jó lesz ez az új ház rendszer
Játékos: de bugos a jármű rendszer, eltűnnek kocsik
Scripter: majd az is javítva lesz
- 1 év múlva -
Scripter: óóóó de jó lesz ez az új sebzés rendszer
Játékos: de bugos a jármű rendszer, eltűnnek kocsik
Scripter: majd az is javítva lesz
...
[/quote]
A másik legnagyobb probléma amivel szembesültem már többször is (és a másik oldalával is ami szintén negatív kicsit!) amikor valaki kezdő, vagy csak nem tud megoldani egy problémát és ül a problémán vagy nem érdekli a dolog és nem is fejleszt, mert megtorpan (másik oldal amikor mindent kérdez). Sokan nem mernek kérdezni, mert \"az annyira gáz, hogy nem tudom megoldani\"...
Vagy valakinek nagy ötlete van, sokkal nagyobb ötlet mint amit megtud valósítani és nem kérdez, hanem csinál egy képességeihez mérten sokkal gyengébb kódot, mert elveszi a kedvét, hogy nem tudja olyan szinten kidolgozni...
Ajánlom figyelembe mindenkinek az aláírásomban található linkeket, nekem segítettek Amikor scripteltem nap mint nap használtam a wiki-t
Google a barátod,
Wiki a barátnőd,
Youtube a szeretőd