Chat Commands -
CrazyManiac - 11.10.2012
Hello everyone. I made some chat commands, but i have some problems with them! Here i'll show you screenshots of the issue, and i'll post the pawno codes for those who might be able to fix it
Problem Screenshots:
Problem Codes:
1. /do
Код:
if (strcmp("/do", cmdtext, true, 10) == 0)
{
new str[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /do [TEXT]");
new name[20];
GetPlayerName(playerid,name,20);
format(str,sizeof(str),"** %s ((%s))",str,name);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
for(new i = 0;i<MAX_PLAYERS;++i)
{
if(IsPlayerInRangeOfPoint(i,5,X,Y,Z)) SendClientMessage(i,-1,str);
return 0;
}
return 1;
}
2. /me
Код:
if (strcmp("/me", cmdtext, true, 10) == 0)
{
new str[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /me [TEXT]");
new name[20];
GetPlayerName(playerid,name,20);
format(str,sizeof(str),"** %s %s **",name,str);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
for(new i = 0;i<MAX_PLAYERS;++i)
{
if(IsPlayerInRangeOfPoint(i,5,X,Y,Z)) SendClientMessage(i,-1,str);
return 0;
}
return 1;
}
3. /b
Код:
if (strcmp("/b", cmdtext, true, 10) == 0)
{
new str[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /b [TEXT]");
new name[20];
GetPlayerName(playerid,name,20);
format(str,sizeof(str),"((%s: %s))",name,str);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
for(new i = 0;i<MAX_PLAYERS;++i)
{
if(IsPlayerInRangeOfPoint(i,5,X,Y,Z)) SendClientMessage(i,-1,str);
return 0;
}
return 1;
}
4. /o
Код:
if (strcmp("/o", cmdtext, true, 10) == 0)
{
new str[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /o [TEXT]");
new name[20];
GetPlayerName(playerid,name,20);
format(str,sizeof(str),"[OOC] %s[%d]: %s",name,playerid,str);
SendClientMessageToAll(-1,str);
return 1;
}
I hope someone is able to fix it

!
Greetings, CrazyManiac.
NOTE: When i type a chat command followed by text (Example: /me takes a shit), it says Unknown Command.
NOTE: For those who were gonna ask if i have sscanf, i do.
Re: Chat Commands -
gtakillerIV - 11.10.2012
PHP код:
if (strcmp("/do", cmdtext, true, 10) == 0)
{
new str[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /do [TEXT]");
new name[20];
GetPlayerName(playerid,name,20);
format(str,sizeof(str),"** %s ((%s))",str,name);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
for(new i = 0;i<MAX_PLAYERS;++i)
{
if(IsPlayerInRangeOfPoint(i,5,X,Y,Z)) return SendClientMessage(i,-1,str);
}
return 1;
}
PHP код:
if (strcmp("/me", cmdtext, true, 10) == 0)
{
new str[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /me [TEXT]");
new name[20];
GetPlayerName(playerid,name,20);
format(str,sizeof(str),"** %s %s **",name,str);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
for(new i = 0;i<MAX_PLAYERS;++i)
{
if(IsPlayerInRangeOfPoint(i,5,X,Y,Z)) return SendClientMessage(i,-1,str);
}
return 1;
}
PHP код:
if (strcmp("/b", cmdtext, true, 10) == 0)
{
new str[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /b [TEXT]");
new name[20];
GetPlayerName(playerid,name,20);
format(str,sizeof(str),"((%s: %s))",name,str);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
for(new i = 0;i<MAX_PLAYERS;++i)
{
if(IsPlayerInRangeOfPoint(i,5,X,Y,Z)) return SendClientMessage(i,-1,str);
}
return 1;
}
Try them, you had return 0; which you don't need.
PHP код:
if (strcmp("/o", cmdtext, true, 2) == 0)
{
new str[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /o [TEXT]");
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(str,sizeof(str),"[OOC] %s[%d]: %s",name,playerid,str);
SendClientMessageToAll(-1,str);
return 1;
}
Re: Chat Commands -
CrazyManiac - 11.10.2012
Tried them, but didnt work out well.
/o
How it has to be: [OOC] CrazyManiac[0]: Yo.
How it is now: [OOC] CrazyManiac[0]: /o Yo.
/b
How it has to be: ((CrazyManiac: You hired a doo lol?))
How it is now: ((CrazyManiac: /b))
When i type /b followed by text (Example: /b You hired a shit?), it says Unknown Command.
/me
How it has to be: ** CrazyManiac takes a doo. **
How it is now: ** CrazyManiac /me **
When i type /me followed by text (Example: /me takes a shit), it says Unknown Command.
/do
How it has to be: ** You see a shit ((CrazyManiac))
How it is now: ** /do ((CrazyManiac))
When i type /do followed by text (Example: /do You see a shit), it says Unknown Command.
Hope someone can fix it.
Re: Chat Commands -
gtakillerIV - 11.10.2012
Oh I see,
PHP код:
if (strcmp("/do", cmdtext, true, 3) == 0)
{
new str[128],string[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /do [TEXT]");
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"** %s ((%s))",str,name);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
for(new i = 0;i<MAX_PLAYERS;++i)
{
if(IsPlayerInRangeOfPoint(i,5,X,Y,Z)) return SendClientMessage(i,-1,string);
}
return 1;
}
PHP код:
if (strcmp("/me", cmdtext, true, 3) == 0)
{
new str[128],string[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /me [TEXT]");
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"** %s %s **",name,string);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
for(new i = 0;i<MAX_PLAYERS;++i)
{
if(IsPlayerInRangeOfPoint(i,5,X,Y,Z)) return SendClientMessage(i,-1,string);
}
return 1;
}
PHP код:
if (strcmp("/b", cmdtext, true, 2) == 0)
{
new str[128],string[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /b [TEXT]");
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"((%s: %s))",name,str);
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
for(new i = 0;i<MAX_PLAYERS;++i)
{
if(IsPlayerInRangeOfPoint(i,5,X,Y,Z)) return SendClientMessage(i,-1,string);
}
return 1;
}
PHP код:
if (strcmp("/o", cmdtext, true, 2) == 0)
{
new str[128],string[128];
if(sscanf(cmdtext,"s[128]",str)) return SendClientMessage(playerid,-1,"USAGE: /o [TEXT]");
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"[OOC] %s[%d]: %s",name,playerid,str);
SendClientMessageToAll(-1,string);
return 1;
}
String confliction.
Re: Chat Commands -
Riddick94 - 11.10.2012
Firstly, yours 'b' command is not 10 characters long, only 2 (slash and name of command)
pawn Код:
if(strcmp("/b", cmdtext, true, 2) == 0)
{
new string[128], name[MAX_PLAYER_NAME];
if(sscanf(cmdtext,"s[128]",str))return SendClientMessage(playerid,-1,"USAGE: /b [TEXT]");
{
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "((%s: %s))", name, string);
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerInRangeOfPoint(i, 5.0, X, Y, Z))
{
SendClientMessage(i, -1, string);
}
}
}
return true;
}
Secondly, remember about indentation. Thirdly player name can be 24 characters long, not 20 so i'd rather you to use MAX_PLAYER_NAME define or 24 than 20.
Re: Chat Commands -
CrazyManiac - 11.10.2012
@gtakillerIV: Doesn't looks good bro! Lol.
@Riddick94: Well, could you make it for me then?
Re: Chat Commands - Glint - 11.10.2012
It has to do something with "returns" i am positive but i don't know what since i am not fully into strcmp.
Re: Chat Commands -
zSuYaNw - 11.10.2012
PHP код:
if(!strcmp("/do", cmdtext, true))
{
// Create array...
static
str[128]
;
// Format Array "str"
if(sscanf(cmdtext,"s[128]",str))
return SendClientMessage(playerid,-1,"USAGE: /do [TEXT]");
// Create Array to get name of player
static
name[24] // MaxPlayer name is 24!
;
// Formating message
format(str,sizeof(str),"** %s ((%s))",str,(GetPlayerName(playerid,name,20), name));
// Create floats.
static
Float:X,
Float:Y,
Float:Z
;
// Store Player pos in floats createds.
GetPlayerPos(playerid,X,Y,Z);
// Making loop(otimized).
// Create variables to incremment and to store sever slots.
static
Interator,
MaxPlayer
;
// Reseting variables, after don't show errors.
Interator = 0;
MaxPlayers = GetMaxPlayers();
// Looopiing..
for(; Interator != MaxPlayers; ++Interator)
{
/// if's players near player exibe message.
if(IsPlayerInRangeOfPoint(Interator,5,X,Y,Z))
{
SendClientMessage(Interator,-1,str);
}
}
return 1;
}
Sorry my english, i'm Brazilian boy.
Re: Chat Commands -
ZeMuNaC - 11.10.2012
Check this out.
https://sampforum.blast.hk/showthread.php?tid=336052
Re: Chat Commands -
Riddick94 - 11.10.2012
Did you tried my code? Just replace yours old one with mine and test it. If you still have a problem then you should swap to another command processor, for example ZeeX's Command Processor or ******'s.