Én ha egy adatot globálisan akarok felhasználni akkor globálisan hozom létre, ha lokálisan akkor lokálisan...
Kb ez nálam olyan, mintha létrehoznék egy osztályt C#-ban, és a függvényen belül összerakott stringeket egy static változóban tárolnám...nem erre való! persze van amikor direkt azért rakja össze az ember, mert onnan akarja felhasználni, de felesleges ha lokálisan akarod használni...és ugye még egy hiba forrás, mert véletlen olyan üzenetet láthat a játékos ami nem is neki szól!
És ugye ha valaki talál egy ilyen bugos parancsot amit 10000 évente 1x használunk és nem derül ki a bugja, csak ő tud róla akkor ezzel vissza is tud élni...vagy olyan üzeneteket tud olvasni amiket nem kéne, vagy olyan helyre teleportálni ahova nem kéne tudnia...
stb...
ez egy játéknál oké még kisebb gond, de egy komolyabb programnál végzetes hiba lehet...
Én pl olyan helyen dolgozok, ha egy ilyen dolog miatt hiba lenne abból elég nagy botrány lehetne...
Szóval én 1000+1x is átgondolnám miben milyen veszélyt látok...
Emberek vagyunk hibázunk, de nem mind1 milyen árat fizetünk a hibáinkért :)
1-1 ilyen rossz szokás a későbbi pályafutásodra is hatással lehet...amíg sa-mp szerveren bugot okoz az még a legkisebb probléma, de ha esetleg később egy komoly programon dolgozol és egy ilyen bug miatt valaki személyes adata kikerül abból per meg mi egyéb lehet...
Ha annyira nem akarsz mindenhol létrehozni változókat akkor inkább macroval csináld...
pl:
#define CREATE_LOCAL_VARS new string[128]; new tmp = 0; // ...
és akkor minden CallBack és Function elejére odarakod...
pl:
public OnPlayerConnect(playerid)
{
CREATE_LOCAL_VARS
// ...
return 1;
}