ann command causes crash
#1

This command causes crash on my server as I fix it?

when using the command /ann ~r~text, it is normal

but when they write without the ~ provokes crash
/ann r~ text


Код:
CMD:ann(playerid, params[])
{
 if(Player[playerid][Level] < 5 && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"{0099FF}>> {EEEEEE}Error: {0099FF}You Need High level.");
        GameTextForAll(params,4000,3);
    new
       jugador[32],
        enviador[128]
    ;
    GetPlayerName(playerid, jugador, sizeof(jugador));
    format(enviador, 128, "Admi {FFFFFF}%s envio ann",jugador);
    SendClientMessageToAll(PINK_COLOR,enviador);
    return 1;
}
Reply
#2

Код:
CMD:ann(playerid, params[])
{
 if(Player[playerid][Level] < 5 && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"{0099FF}>> {EEEEEE}Error: {0099FF}You Need High level.");

         new tmp[200],jugador[32],enviador[128];

        if(sscanf(params, "s", tmp))
	{
	    Usage(playerid, "/ann <msg>");
	    return true;
	}

       GetPlayerName(playerid, jugador, sizeof(jugador));

       format(enviador, sizeof(enviador),  "Admi {FFFFFF}%s envio ann", jugador);
       SendClientMessageToAll(PINK_COLOR,enviador);

	format(enviador, sizeof(enviador), "~w~%s", tmp);
	GameTextForAll(enviador, 4000, 3);
       return 1;
}
Hope this works!
Use sscanf.
Reply
#3

thanks, but it does not work, it keeps crashing
Reply
#4

Код:
if(Player[playerid][Level] < 5) return SendClientMessage(playerid,-1,"{0099FF}>> {EEEEEE}Error: {0099FF}You Need High level.");
Try this.
Reply
#5

Код:
CMD:ann(playerid, params[])
{
    if(Player[playerid][Level] < 5 && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"{0099FF}>> {EEEEEE}Error: {0099FF}You Need High level.");
	new textt[56];
	if(sscanf(params, "s[128]", textt)) return SendClientMessage(playerid, -1, "/ann text");
	if(!IsSafeGametext(textt)) return SendClientMessage(playerid, -1, "You're probably missing a '~' which can crash you and/or other clients!");
	GameTextForAll(textt, 4000, 3);
    new pNamex[32], msgg[128];
    GetPlayerName(playerid, pNamex, sizeof(pNamex));
    format(msgg, sizeof(msgg), "Admi {FFFFFF}%s envio ann", pNamex);
    SendClientMessageToAll(-1, msgg);
	return 1;
}
stock IsEven(integer)
{
	if(integer % 2 == 0)
		 return 1;
	return 0;
}

stock IsSafeGametext(text[])
{
	new cnt = 0;
	for(new i = 0; i < strlen(text); i ++)
	{
		if(text[i] == '~')
			cnt ++;
	}
	if(IsEven(cnt) == 0)
		return 0;
	return 1;
}
Reply
#6

Quote:
Originally Posted by AlamoTR
Посмотреть сообщение
Код:
CMD:ann(playerid, params[])
{
    if(Player[playerid][Level] < 5 && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"{0099FF}>> {EEEEEE}Error: {0099FF}You Need High level.");
	new textt[56];
	if(sscanf(params, "s[128]", textt)) return SendClientMessage(playerid, -1, "/ann text");
	if(!IsSafeGametext(textt)) return SendClientMessage(playerid, -1, "You're probably missing a '~' which can crash you and/or other clients!");
	GameTextForAll(textt, 4000, 3);
    new pNamex[32], msgg[128];
    GetPlayerName(playerid, pNamex, sizeof(pNamex));
    format(msgg, sizeof(msgg), "Admi {FFFFFF}%s envio ann", pNamex);
    SendClientMessageToAll(-1, msgg);
	return 1;
}
stock IsEven(integer)
{
	if(integer % 2 == 0)
		 return 1;
	return 0;
}

stock IsSafeGametext(text[])
{
	new cnt = 0;
	for(new i = 0; i < strlen(text); i ++)
	{
		if(text[i] == '~')
			cnt ++;
	}
	if(IsEven(cnt) == 0)
		return 0;
	return 1;
}
This script if I work thanks to both

Thanks @UFF @AlamoTR

+Rep
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)