Yes that's what I pretty much mean. You can write this:
pawn Код:
format(faisal, 32, "Text", specifierreplacements);
That works just fine, though if you don't remember the cells or they change at a later point because you do this:
pawn Код:
new faisal[54];
format(faisal, 32, "Text", specifierreplacements); // now even tho you changed the size this one didn't adapt
You can face these issues.
To your question about PVars, they are variables stored in sa-mp and not in your script. So you can access them from any script at anytime.
Sort of like this:
Gamemode
pawn Код:
public OnPlayerConnect(playerid)
{
SetPVarInt(playerid, "Varname", 1);
}
Filterscript
pawn Код:
public OnPlayerConnect(playerid)
{
printf("Debug: %d", GetPVarInt(playerid, "Varname")); // will print Debug: 1
}
It's slower then regular variables but can be accessed by any script. Plus you don't need to define a size like you would with an array:
pawn Код:
new bool:IsSpawned[MAX_PLAYERS];
In the above scenario you had to tell the script that it should make the array long enough to hold a variable for EVERY player, now imagine though you have something like this:
pawn Код:
new bool:IsAdmin[MAX_PLAYERS];
Obviously not every player will be admin, so it may be pointless in storing false for everyone else right? So instead you can do this:
pawn Код:
SetPVarInt(playerid, "Admin", 1);
Now whenever you use this:
pawn Код:
GetPVarInt(playerid, "Admin");
It'll return 1 if you've set it for the player and EVEN IF IT IS NOT SET it will return 0.
I hope I am making sense here, if something is confusing to you don't hesistate to ask again and I'll try explaining it again!
Regards.