Leader chat
#1

Hello! I made this command but I cannot make it work properly. It has three variables, but it doesn't support text. If I say something like: /le Hello! it says: SERVER:UNKNOWN COMMAND; but if I type only the command (/le) it says: Grove leader T_Boy: 0

Can you help me?
if (strcmp("/le", cmdtext, true, 10) == 0)
{
new
string[128],
leader[28],
orgname[118],
text[100];

if(sscanf("s[100]",text)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /le [text]");
if(!IsLeader(playerid)) return SendClientMessage(playerid, COLOR_YELLOW, "You are not a leader!");
GetPlayerName(playerid, leader, sizeof(leader));
orgname = GetOrgName(PlayerOrg[playerid]);
format(string,sizeof(string), "%s leader %s: %d", orgname, leader, text);
SendClientMessageToLeaders(0xB6BAFFFF,string);
return 1;
}
Reply
#2

format(string,sizeof(string), "%s leader %s: %d", orgname, leader, text);

Text is a string not the integer.
Reply
#3

format(string,sizeof(string), "%s leader %s: %s", orgname, leader, text);

Still not working!
Reply
#4

pawn Код:
if (strcmp("/le", cmdtext, true, 10) == 0)
{
new
string[128],
leader[24],
orgname[118],
text[100];

if(!IsLeader(playerid)) return SendClientMessage(playerid, COLOR_YELLOW, "You are not a leader!");
if(isnull(params)) return SendClientMessage(playerid, COLOR_YELLOW,"Usage: /le [text]");
GetPlayerName(playerid, leader, sizeof(leader));
orgname = GetOrgName(PlayerOrg[playerid]);
format(string,sizeof(string), "%s leader %s: %s", orgname, leader, text);
SendClientMessageToLeaders(0xB6BAFFFF,string);
return 1;
}
if that didnt work post your SendClientMessageToLeaders Function
Reply
#5

The above will give you an error because 'params' is not defined.

Try this:
pawn Код:
if (strcmp("/le", cmdtext, true, 10) == 0)
{
new
string[128],
leader[28],
orgname[118],
text[100];

if(sscanf(cmdtext, "s[100]",text)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /le [text]");
if(!IsLeader(playerid)) return SendClientMessage(playerid, COLOR_YELLOW, "You are not a leader!");
GetPlayerName(playerid, leader, sizeof(leader));
orgname = GetOrgName(PlayerOrg[playerid]);
format(string,sizeof(string), "%s leader %s: %d", orgname, leader, text);
SendClientMessageToLeaders(0xB6BAFFFF,string);
return 1;
}
Reply
#6

I would recomment you since you are using sscanf, to switch to ZCMD because it's faster and better than strcmp.
Last, the lenght of "/le" is not 10, but 3.
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/le", true))
    {
        new
            text[100]
        ;
        if(sscanf(cmdtext, "s[100]",text)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /le [text]");
        if(!IsLeader(playerid)) return SendClientMessage(playerid, COLOR_YELLOW, "You are not a leader!");
        new
            string[128],
            leader[ MAX_PLAYER_NAME ],
            orgname[118]// it should be lower
        ;
        GetPlayerName(playerid, leader, sizeof(leader));
        orgname = GetOrgName(PlayerOrg[playerid]);
        format(string,sizeof(string), "%s leader %s: %s", orgname, leader, text);
        SendClientMessageToLeaders(0xB6BAFFFF,string); // Make sure that function is called.
        print(string);// Debug
        return 1;
    }
    return 0;
}
Reply
#7

Quote:
Originally Posted by xMCx
Посмотреть сообщение
pawn Код:
if (strcmp("/le", cmdtext, true, 10) == 0)
{
new
string[128],
leader[24],
orgname[118],
text[100];

if(!IsLeader(playerid)) return SendClientMessage(playerid, COLOR_YELLOW, "You are not a leader!");
if(isnull(params)) return SendClientMessage(playerid, COLOR_YELLOW,"Usage: /le [text]");
GetPlayerName(playerid, leader, sizeof(leader));
orgname = GetOrgName(PlayerOrg[playerid]);
format(string,sizeof(string), "%s leader %s: %s", orgname, leader, text);
SendClientMessageToLeaders(0xB6BAFFFF,string);
return 1;
}
if that didnt work post your SendClientMessageToLeaders Function
Quote:
Originally Posted by YoYo123
Посмотреть сообщение
The above will give you an error because 'params' is not defined.

Try this:
pawn Код:
if (strcmp("/le", cmdtext, true, 10) == 0)
{
new
string[128],
leader[28],
orgname[118],
text[100];

if(sscanf(cmdtext, "s[100]",text)) return SendClientMessage(playerid, COLOR_YELLOW, "Usage: /le [text]");
if(!IsLeader(playerid)) return SendClientMessage(playerid, COLOR_YELLOW, "You are not a leader!");
GetPlayerName(playerid, leader, sizeof(leader));
orgname = GetOrgName(PlayerOrg[playerid]);
format(string,sizeof(string), "%s leader %s: %d", orgname, leader, text);
SendClientMessageToLeaders(0xB6BAFFFF,string);
return 1;
}
Not working (
Reply
#8

Not working either!
Reply
#9

Hmmm. Now I seen that /s and /me also doesn't work, but they worked! Why
Reply
#10

No idea, if you returned false. Anyway, the best solution for it is to replace all the commands with strcmp to ZCMD. It's much faster and easier.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)