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

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Szkript kérések => A témát indította: Daniii - 2016. Június 28. - 09:21:45

Cím: /me hiba.
Írta: Daniii - 2016. Június 28. - 09:21:45
Amikor tesztelem, a /me-t nem ír ki semmit.
 
CMD:me(playerid, params[])
{
new szoveg[128],string[128];
if(sscanf(params,\"s[128]\",szoveg)) return SCM(playerid, SARGA, \"Használat: /me [cselekvés]\");
new Float:X;
new Float:Y;
new Float:Z;
new i;
while(i < MAX_PLAYERS)
{
i++;
GetPlayerPos(playerid,X,Y,Z);
if(IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))
        {
   format(string,sizeof(string),\"* %s %s\", Nev(playerid), szoveg);
   SCM(i, ROZSASZIN, string);
}
}
return 1;
}
Cím: /me hiba.
Írta: bendor - 2016. Június 28. - 09:48:27
sscanf be van töltve rendesen?
Cím: /me hiba.
Írta: Daniii - 2016. Június 28. - 09:54:51
Be, más sscanfal működő parancs megy, pl.: /jármű. De ez nem.
Cím: /me hiba.
Írta: 1Mark6 - 2016. Június 28. - 09:59:47
A hiba egyszerű, előszőr is for ciklussal szebben nézne ki, de ha már while ciklust használsz, akkor annak az \'i\'-nek adj kezdőértéket :
 
new i = 0;

 
És ne a kód elején növeld az i-t hanem a kód után, mert ha az elején növeled akkor a 0-ás ID-t kihagyja ami tesztelés során esélyes, hogy te vagy.
Szóval így nézz ki rendesen :
 
CMD:me(playerid, params[])
{
new szoveg[128],string[128];
if(sscanf(params,\"s[128]\",szoveg)) return SCM(playerid, SARGA, \"Használat: /me [cselekvés]\");
new Float:X,Float:Y,Float:Z;
new i = 0;
while(i < MAX_PLAYERS)
{
   GetPlayerPos(playerid,X,Y,Z);
   if(IsPlayerInRangeOfPoint(i, 5.0, X, Y, Z))
   {
         format(string,sizeof(string),\"* %s %s\", Nev(playerid), szoveg);
         SCM(i, ROZSASZIN, string);
   }
   i++;
}
return 1;
}
Cím: /me hiba.
Írta: Daniii - 2016. Június 28. - 10:11:59
Idézetet írta: 1Mark6 date=1467100787\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"61101\" data-ipsquote-contentclass=\"forums_Topic
A hiba egyszerű, előszőr is for ciklussal szebben nézne ki, de ha már while ciklust használsz, akkor annak az \'i\'-nek adj kezdőértéket :
 
new i = 0;

 
És ne a kód elején növeld az i-t hanem a kód után, mert ha az elején növeled akkor a 0-ás ID-t kihagyja ami tesztelés során esélyes, hogy te vagy.
Szóval így nézz ki rendesen :
 
CMD:me(playerid, params[])
{
new szoveg[128],string[128];
if(sscanf(params,\"s[128]\",szoveg)) return SCM(playerid, SARGA, \"Használat: /me [cselekvés]\");
new Float:X,Float:Y,Float:Z;
new i = 0;
while(i < MAX_PLAYERS)
{
   GetPlayerPos(playerid,X,Y,Z);
   if(IsPlayerInRangeOfPoint(i, 5.0, X, Y, Z))
   {
         format(string,sizeof(string),\"* %s %s\", Nev(playerid), szoveg);
         SCM(i, ROZSASZIN, string);
   }
   i++;
}
return 1;
}

 

Köszi mostmár működik, megy a +.