public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new tmp[256];
new string[128];
new idx;
cmd = strtok(cmdtext, idx);
if(!strcmp(cmd,"/setaccent", true))
{
if(IsPlayerConnected(playerid) && PlayerInfo[playerid][pAdmin] > 1)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp) || strlen(tmp) <= 6 || strlen(tmp) > 26)
{
SendClientMessage(playerid,0xFFFFFFAA,"Usage: /accent {58A624}[ accent name ]{FFFFFF}.");
SendClientMessage(playerid,0xFFFFFFAA,"Example: {58A624}/accent Portuguese ");
return 1;
}
format(string,sizeof(string),"Accent: You have changed your accent to {58A624}%s.",tmp);
SendClientMessage(playerid,0xFFFFFFAA,string);
strmid(pAccent[playerid],tmp,0,sizeof(tmp),255);
}
return 1;
}
return 0;
}
CMD:setaccent(playerid,params[])
{
new cmd[256];
new tmp[256];
new string[128];
new idx;
if(IsPlayerConnected(playerid) && PlayerInfo[playerid][pAdmin] > 1)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp) || strlen(tmp) <= 6 || strlen(tmp) > 26)
{
SendClientMessage(playerid,0xFFFFFFAA,"Usage: /accent {58A624}[ accent name ]{FFFFFF}.");
SendClientMessage(playerid,0xFFFFFFAA,"Example: {58A624}/accent Portuguese ");
return 1;
}
format(string,sizeof(string),"Accent: You have changed your accent to {58A624}%s.",tmp);
SendClientMessage(playerid,0xFFFFFFAA,string);
strmid(pAccent[playerid],tmp,0,sizeof(tmp),255);
}
return 1;
}
CMD:setaccent(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] > 1)
{
new accent[27], string[128];
if(sscanf(params, "s[27]", accent))
{
SendClientMessage(playerid,0xFFFFFFAA,"Usage: /accent {58A624}[ accent name ]{FFFFFF}.");
SendClientMessage(playerid,0xFFFFFFAA,"Example: {58A624}/accent Portuguese ");
return 1;
}
if(strlen(accent) <= 6 || strlen(accent) > 26) return cmd_setaccent(playerid, ""); // recall the command /setaccent
format(string,sizeof(string),"Accent: You have changed your accent to {58A624}%s.",accent);
SendClientMessage(playerid,0xFFFFFFAA,string);
strmid(pAccent[playerid],accent,0,sizeof(accent),255);
}
return 1;
}
|
PHP код:
|
|
I suggest you use sscanf, strtok is outdated & slow. Anywho here it is, sscanf version.
pawn Код:
|
CMD:setaccent(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] > 1)
{
new accent[27], string[128], tmp[256];
if(sscanf(params, "s[27]", accent))
{
SendClientMessage(playerid,0xFFFFFFAA,"Usage: /setaccent {58A624}[ Accent name ]{FFFFFF}.");
return 1;
}
if(strlen(accent) <= 6 || strlen(accent) > 26) return cmd_setaccent(playerid, ""); // recall the command /setaccent
format(string,sizeof(string),"Accent: You have changed your accent to {58A624}%s.",accent);
SendClientMessage(playerid,0xFFFFFFAA,string);
strmid(pAccent[playerid],tmp,0,sizeof(tmp),255);
}
return 1;
}
public OnPlayerText(playerid, text[])
{
if(OnCall[playerid] == -1)//If the player is not talking on a cellphone then
{
if(strlen(pAccent[playerid]) > 0)
{
format(message,sizeof(message),"%s [%s accent]: %s", GetName(playerid), pAccent[playerid], text);
ProxDetector(30.0, playerid, message, -1);
Log("/logs/chat.txt", message);
SetPlayerChatBubble(playerid,text,COLOR_WHITE,20.0,5000);
}
else
{
format(message, sizeof(message), "%s says: %s", GetName(playerid), text);
ProxDetector(30.0, playerid, message, -1);
Log("/logs/chat.txt", message);
SetPlayerChatBubble(playerid,text,COLOR_WHITE,20.0,5000);
}
}
if(OnCall[playerid] != -1 )//If the player is talking on a cellphone then
{
if(strlen(pAccent[playerid]) > 0)
{
format(string,sizeof(string),"%s [Muffled %s accent](cellhpone) %s", GetPlayerNameEx(playerid), pAccent[playerid], text);
ProxDetector(20.0, playerid, string, COLOR_FADE1);
Log("/logs/chat.txt", string);
SetPlayerChatBubble(playerid,text,COLOR_WHITE,20.0,5000);
}
else
{
format(string, sizeof(string), "(cellphone) %s says: %s", GetPlayerNameEx(playerid), text);
ProxDetector(20.0, playerid, string,COLOR_FADE1);
Log("/logs/chat.txt", string);
SetPlayerChatBubble(playerid,text,COLOR_WHITE,20.0,5000);
}
}
if(IsPlayerConnected(OnCall[playerid]))
{
if(OnCall[OnCall[playerid]] == playerid)
{
SendClientMessage(OnCall[playerid], COLOR_YELLOW, string);
Log("/logs/cellphone.txt", message);
}
}
return 0;
}
public OnPlayerConnect(playerid)
{
new string[] = " ";
strmid(pAccent[playerid],string,0,sizeof string ,255);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new string[] = " ";
strmid(pAccent[playerid],string,0,sizeof string ,255);
return 1;
}
|
So the problem is...? That you want /setaccent to work for admins, like they can set player's accent but not their accent?
|
CMD:setaccent(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] > 1)
{
new targetid, accent[26];
if(sscanf(params, "us[26]", targetid, accent)) return SendClientMessage(playerid, 0xFFFFFFAA, "Usage: /accent {58A624}[ User / ID] [ Accent name ]{FFFFFF}.");
if(!IsPlayerConnected(targetid) || targetid == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFFFFFFAA, "Player is not connected.");
new string[80];
format(string, sizeof(string), "Accent: You have changed %s's accent to {58A624}%s.", GetName(targetid), accent);
SendClientMessage(playerid, 0xFFFFFFAA, string);
strmid(pAccent[targetid], accent, 0, 26);
}
return 1;
}
public OnPlayerText(playerid, text[])
{
new msg[144]; // Global strings are a no-no.
if(OnCall[playerid] == -1)// If the player is not talking on a cellphone then
{
// I would recommend making use of 'isnull' here instead of strlen.
if(strlen(pAccent[playerid])) format(msg, sizeof(msg), "%s [%s accent]: %s", GetName(playerid), pAccent[playerid], text);
else format(msg, sizeof(msg), "%s says: %s", GetName(playerid), text);
ProxDetector(30.0, playerid, msg, -1);
}
else // If the player is talking on a cellphone then
{
// I would recommend making use of 'isnull' here instead of strlen.
if(strlen(pAccent[playerid])) format(msg, sizeof(msg), "%s [Muffled %s accent](cellphone) %s", GetPlayerNameEx(playerid), pAccent[playerid], text);
else format(msg, sizeof(msg), "(cellphone) %s says: %s", GetPlayerNameEx(playerid), text);
ProxDetector(20.0, playerid, msg, COLOR_FADE1);
}
Log("/logs/chat.txt", msg);
SetPlayerChatBubble(playerid, msg, COLOR_WHITE, 20.0, 5000);
if(IsPlayerConnected(OnCall[playerid]))
{
if(OnCall[OnCall[playerid]] == playerid)
{
SendClientMessage(OnCall[playerid], COLOR_YELLOW, msg);
Log("/logs/cellphone.txt", msg);
}
}
return 0;
}
public OnPlayerConnect(playerid)
{
pAccent[playerid][0] = EOS;
return 1;
}