Látom, hogy rengeteg ember használja ezt a pName funkciót, amivel mindig lekéri a nevét a játékosnak.
Csak itt az a probléma, hogy a GetPlayerName mindig lefut. Ezért megalkottam ezt a kódot, amiben csak EGYSZER fut le ez a függvény, és nempedig minden név lekérésénél.
[pawn]
new
PlayerNames[sZERVER_SLOTOK_SZAMA_IRD_AT][MAX_PLAYER_NAME + 1]; // Minden játékoshoz tartozó cella, aminek a hossza 25 karakter
#define pName(%1) \\
PlayerNames[%1]
stock __pName__SetPlayerName(playerid, _name[])
{
new
retVal = SetPlayerName(playerid, _name);
if(retVal > 0)
{
format(PlayerNames[playerid], MAX_PLAYER_NAME + 1, _name);
}
return retVal;
}
#if defined _ALS_SetPlayerName
#undef SetPlayerName
#else
#define _ALS_SetPlayerName
#endif
#define SetPlayerName __pName__SetPlayerName
// Használat: printf(\"ID 0 neve: %s\", pName(0));
public OnPlayerConnect(playerid)
{
// Ez a kód mindig lefelül szerepeljen!
GetPlayerName(playerid, PlayerNames[playerid], MAX_PLAYER_NAME); // Belekérjük a játékos nevét a PlayerNames-nél a játékoshoz tartozó cellába.
}
public OnPlayerDisconnect(playerid, reason)
{
// Ez a kód itt mindig legalul szerepeljen!
PlayerNames[playerid][0] = EOS; // EOS = End Of String, azaz nullázzuk
}
[/pawn]