09.10.2014, 11:31
(
Последний раз редактировалось RoboN1X; 09.10.2014 в 11:45.
Причина: Sorry, i forgot.
)
You're trying to check an empty string, you need to check it after sscanf is passed the string to shout variable.
Also what is text[i+6]? This is unnecessary, and wouldn't work, because it will do this:
"Just A Text" = 11chars + 1 \0
'A' <= text[6+6] <= 'Z' will return false, as it's \0
'A' <= text[7+6] <= 'Z' will return false, as there is no char at string 13.... (might probably stop working)
Also strlen will not count the \0 at the end, so you don't need to -1, unless you want also call "HAHAHa" as Caps.
So change to this, don't worry, all characters will be checked if it's capitals
I didn't test it, but i hope it works (it should).
pawn Код:
CMD:s(playerid, params[]) return cmd_shout(playerid, params);
CMD:shout(playerid, params[])
{
new
string[128],
shout[100];
if(sscanf(params, "s[100]", shout))
{
SendClientMessage(playerid, -1, ""COL_CYAN"[KORISTI]: "COL_WHITE"/(s)hout [text]");
return 1;
}
else
{
if( IsCaps( shout ) )
{
SendClientMessage( playerid, -1, ""COL_RED"[GRESKA]: "COL_WHITE"Ne mozete pisati Caps Lockom, velika slova oznacavaju sukob! "COL_RED"Iskljucite"COL_WHITE" Caps Lock"COL_RED"!" );
return 0;
}
format(string, sizeof(string), "%s se dere: %s!!",GetName(playerid),shout);
ProxDetector(50.0, playerid, string, -1);
}
return 1;
}
"Just A Text" = 11chars + 1 \0
'A' <= text[6+6] <= 'Z' will return false, as it's \0
'A' <= text[7+6] <= 'Z' will return false, as there is no char at string 13.... (might probably stop working)
Also strlen will not count the \0 at the end, so you don't need to -1, unless you want also call "HAHAHa" as Caps.
So change to this, don't worry, all characters will be checked if it's capitals
pawn Код:
stock IsCaps( text[ ] )
{
for( new i, j = strlen( text ); i < j; i ++ )
{
if( ( 'A' <= text[ i ] <= 'Z' ) )
return true;
}
return false;
}