SA-MP Forums Archive
/amsg mutiple times? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: /amsg mutiple times? (/showthread.php?tid=301716)



/amsg mutiple times? - FabianoC - 05.12.2011

I have a command in my script, very simple but very anoyying:

/amsg (text)

the text appears, as it has to, but it appears more then once, sometimes 2 times, sometime 4 times...

Why the hell's that?


Re: /amsg mutiple times? - iTorran - 05.12.2011

Showing us your code might help


Re: /amsg mutiple times? - remyguys - 05.12.2011

PHP код:
 if(strcmp(cmd"/amsg"true) == 0)
    {
        if(
IsPlayerConnected(playerid))
        {
            if (
PlayerInfo[playerid][pAdmin] >= 3)
            {
                new 
length strlen(cmdtext);
                while ((
idx length) && (cmdtext[idx] <= ' '))
                {
                    
idx++;
                }
                new 
offset idx;
                new 
result[64];
                while ((
idx length) && ((idx offset) < (sizeof(result) - 1)))
                {
                    
result[idx offset] = cmdtext[idx];
                    
idx++;
                }
                
result[idx offset] = EOS;
                if(!
strlen(result))
                {
                    
SendClientMessage(playeridCOLOR_LIGHTYELLOW2"[USAGE:] /amsg [Message]");
                    return 
1;
                }
                
format(stringsizeof(string), "Admin %s: %s",GetPlayerNameEx(playerid),result);
                for(new 
0MAX_PLAYERSi++)
                {
                    if(
IsPlayerConnected(i))
                    {
                        
SendClientMessageToAll(COLOR_GREEN,string);
                    }
                }
                return 
1;
            }
            else
            {
                
SendClientMessage(playeridCOLOR_LIGHTYELLOW2"[ERROR:] Your not an administrator!");
                return 
1;
            }
        }
        return 
1;
    } 



Re: /amsg mutiple times? - AstonDA-G - 05.12.2011

Try this:
Код:
if(strcmp(cmd, "/amsg", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if (PlayerInfo[playerid][pAdmin] >= 3)
            {
                new length = strlen(cmdtext);
                while ((idx < length) && (cmdtext[idx] <= ' '))
                {
                    idx++;
                }
                new offset = idx;
                new result[64];
                while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
                {
                    result[idx - offset] = cmdtext[idx];
                    idx++;
                }
                result[idx - offset] = EOS;
                if(!strlen(result))
                {
                    SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[USAGE:] /amsg [Message]");
                    return 1;
                }
                format(string, sizeof(string), "Admin %s: %s",GetPlayerNameEx(playerid),result);
                for(new i = 0; i < MAX_PLAYERS; i++)
                {
                    if(IsPlayerConnected(i))
                    {
                        SendClientMessage(i, COLOR_GREEN,string);
                    }
                }
                return 1;
            }
            else
            {
                SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[ERROR:] Your not an administrator!");
                return 1;
            }
        }
        return 1;
    }
Hope this helps


Re: /amsg mutiple times? - remyguys - 05.12.2011

Quote:
Originally Posted by AstonDA-G
Посмотреть сообщение
Try this:
Код:
if(strcmp(cmd, "/amsg", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if (PlayerInfo[playerid][pAdmin] >= 3)
            {
                new length = strlen(cmdtext);
                while ((idx < length) && (cmdtext[idx] <= ' '))
                {
                    idx++;
                }
                new offset = idx;
                new result[64];
                while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
                {
                    result[idx - offset] = cmdtext[idx];
                    idx++;
                }
                result[idx - offset] = EOS;
                if(!strlen(result))
                {
                    SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[USAGE:] /amsg [Message]");
                    return 1;
                }
                format(string, sizeof(string), "Admin %s: %s",GetPlayerNameEx(playerid),result);
                for(new i = 0; i < MAX_PLAYERS; i++)
                {
                    if(IsPlayerConnected(i))
                    {
                        SendClientMessage(i, COLOR_GREEN,string);
                    }
                }
                return 1;
            }
            else
            {
                SendClientMessage(playerid, COLOR_LIGHTYELLOW2, "[ERROR:] Your not an administrator!");
                return 1;
            }
        }
        return 1;
    }
Hope this helps
Thanks Worked.