GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: MesterMartino - 2013. július 30. - 12:48:26

Cím: String probléma
Írta: MesterMartino - 2013. július 30. - 12:48:26
Üdvözölök minden kedves forumozót!  :D Lenne hozzátok egy kérdésem, ugye itt van egy alap /pm parancs zcmdvel és sscanf-al:
 
CMD:pm(playerid,params[])
{
new uzi[250],id,string[300],name[MAX_PLAYER_NAME];
if(sscanf(params,\"is\",id,uzi)) return SendClientMessage(playerid,COLOR_BLUE,\"Használat: /pm [iD] [Üzenet]\");
else
{
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),\"%s üzeni: %s\",name,uzi);
SendClientMessage(id,COLOR_YELLOW,string);
}
return 1;
}

 
Nos ezzel semmi gond nincs, mivel a fordító tökéletesen végigfut rajta, de amikor a szerveren próbálom ki ezt a parancsot valamiért csak a beírt üzenetet felét jeleníti meg.
Pl:
/pm 1 Szióka, mi a helyez veled eléggé unics ez a nap nem?
Nos ebbõl az üzenetbõl csak kb a veled szóig jeleníti meg :(
Valami ötlet a problémára?
Cím: String probléma
Írta: SnooP - 2013. július 30. - 13:08:26
1. Miért használsz 250-es stringtömböt egy üzenethez, ha a SA:MP csak max 128 karaktert jelenít meg?
2. A 300-as stringtömb tök ugyan az, mint az elsõ pontnál, memória pazarlás.
3. 
if(sscanf(params,\"is\",id,uzi))

 az i helyett u-t használj mert az van a játékos ID-jére / nevére.
4. E helyett sokkal egyszerûbb megoldás a : SendPlayerMessageToPlayer
Ha még mindig ennél a variánsnál maradnál akkor itt egy tutorial arról, hogy hogyan kell megcsináld ZCMD és sscanf segítségével PM-et: http://forum.sa-mp.com/showthread.php?t=164500 . Csak ajánlani tudom jobban egy ilyen dolgot nem lehet elmagyarázni + nincs benne memóriapazarlás.
Cím: String probléma
Írta: bbTamas - 2013. július 30. - 13:15:23
Nem az a hiba, hogy i-t használt, hanem az, hogy sscanf-nál meg adta meg a string tömb méretét.
 
new uzi[96],string[128],name[MAX_PLAYER_NAME];

 
És az id-t szerintem külön hozd létre, mert stringként értelmezi a fordító ha felsorolásban hozod létre.
 
new id;

 

if(sscanf(params,\"is[128]\",id,uzi))