Szerző Téma: String probléma  (Megtekintve 702 alkalommal)

String probléma
« Dátum: 2013. július 30. - 12:48:26 »
0 Show voters
Ü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?

Nem elérhető SnooP

  • 1798
  • SnooP
    • Profil megtekintése
String probléma
« Válasz #1 Dátum: 2013. július 30. - 13:08:26 »
0 Show voters
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.

String probléma
« Válasz #2 Dátum: 2013. július 30. - 13:15:23 »
+2 Show voters
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))
« Utoljára szerkesztve: 2013. július 30. - 13:17:20 írta bbTamas »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal