Problem with /pm cmd -
Face9000 - 19.12.2010
Hi,i maked a fast /pm cmd for my GM.
I got this:
pawn Код:
new pMessage[128];
new gMessage[128];
new pName[MAX_PLAYER_NAME+1];
new iName[MAX_PLAYER_NAME+1];
dcmd_pm(playerid, params[])
{
if(!strlen(params) || strlen(params) > 5) {
SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (id) (message)");
return 1;
}
new id = strval(params);
gMessage = strrest(cmdtext,idx);
if(!strlen(gMessage)) {
SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (id) (message)");
return 1;
}
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,COLOR_YELLOW,"/pm : Bad player ID");
return 1;
}
if(playerid != id) {
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(pMessage,sizeof(pMessage),"<Private Message to %s(%d): %s",iName,id,gMessage);
SendClientMessage(playerid,COLOR_YELLOW,pMessage);
format(pMessage,sizeof(pMessage),">Private Message from %s(%d): %s",pName,playerid,gMessage);
SendClientMessage(id,COLOR_YELLOW,pMessage);
new str[100];
format(str,sizeof str," **PM from %s (%d) to %s (%d): %s",pName,playerid,iName,id,gMessage);
SendClientMessageToAdmins(COLOR_GREEN,str,1);
new str1[100];
format(str1,sizeof str1,"0,5PM from %s (%d) to %s (%d): %s",pName,playerid,iName,id,gMessage);
IRC_GroupSay(gGroupID, channel, str1);
printf(pMessage);
PlayerPlaySound(id,1085,0.0,0.0,0.0);
printf("PM: %s",pMessage);
}
else {
SendClientMessage(playerid,COLOR_YELLOW,"You cannot PM yourself");
}
return 1;
}
I got this errors:
Код:
C:\Documents and Settings\k\Desktop\SFWAR.pwn(802) : warning 219: local variable "pName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1063) : error 017: undefined symbol "strrest"
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1063) : error 033: array must be indexed (variable "gMessage")
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1081) : warning 202: number of arguments does not match definition
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1120) : warning 219: local variable "pName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1120) : warning 219: local variable "iName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1158) : warning 219: local variable "pName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1158) : warning 219: local variable "iName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1180) : warning 219: local variable "pName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1180) : warning 219: local variable "iName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1203) : warning 219: local variable "pName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1203) : warning 219: local variable "iName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1230) : warning 219: local variable "pName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1230) : warning 219: local variable "iName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1261) : warning 219: local variable "pName" shadows a variable at a preceding level
C:\Documents and Settings\k\Desktop\SFWAR.pwn(1261) : warning 219: local variable "iName" shadows a variable at a preceding level
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
2 Errors.
What's wrong?
If i remove the variable pName i get the "undefenied symbol",lol.
Re: Problem with /pm cmd -
Mr L - 19.12.2010
Код:
new pMessage[128];
new gMessage[128];
new pName[MAX_PLAYER_NAME];
new iName[MAX_PLAYER_NAME];
dcmd_pm(playerid, params[])
{
if(!strlen(params) || strlen(params) > 5) {
SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (id) (message)");
return 1;
}
new id = strval(params);
gMessage = strrest(cmdtext,idx);
if(!strlen(gMessage)) {
SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (id) (message)");
return 1;
}
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,COLOR_YELLOW,"/pm : Bad player ID");
return 1;
}
if(playerid != id) {
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(pMessage,sizeof(pMessage),"<Private Message to %s(%d): %s",iName,id,gMessage);
SendClientMessage(playerid,COLOR_YELLOW,pMessage);
format(pMessage,sizeof(pMessage),">Private Message from %s(%d): %s",pName,playerid,gMessage);
SendClientMessage(id,COLOR_YELLOW,pMessage);
new str[100];
format(str,sizeof str," **PM from %s (%d) to %s (%d): %s",pName,playerid,iName,id,gMessage);
SendClientMessageToAdmins(COLOR_GREEN,str,1);
new str1[100];
format(str1,sizeof str1,"0,5PM from %s (%d) to %s (%d): %s",pName,playerid,iName,id,gMessage);
IRC_GroupSay(gGroupID, channel, str1);
printf(pMessage);
PlayerPlaySound(id,1085,0.0,0.0,0.0);
printf("PM: %s",pMessage);
}
else {
SendClientMessage(playerid,COLOR_YELLOW,"You cannot PM yourself");
}
return 1;
}
Re: Problem with /pm cmd -
Face9000 - 19.12.2010
What has changed?I see the normal errors..
Re: Problem with /pm cmd -
Face9000 - 20.12.2010
BUMP!
Re: Problem with /pm cmd -
XePloiT - 20.12.2010
pawn Код:
dcmd_pm(playerid, params[])
{
new pMessage[128];
new gMessage[128];
new pName[MAX_PLAYER_NAME+1];
new iName[MAX_PLAYER_NAME+1];
if(!strlen(params) || strlen(params) > 5) {
SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (id) (message)");
return 1;
}
new id = strval(params);
gMessage = strrest(cmdtext,idx);
if(!strlen(gMessage)) {
SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (id) (message)");
return 1;
}
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,COLOR_YELLOW,"/pm : Bad player ID");
return 1;
}
if(playerid != id) {
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(pMessage,sizeof(pMessage),"<Private Message to %s(%d): %s",iName,id,gMessage);
SendClientMessage(playerid,COLOR_YELLOW,pMessage);
format(pMessage,sizeof(pMessage),">Private Message from %s(%d): %s",pName,playerid,gMessage);
SendClientMessage(id,COLOR_YELLOW,pMessage);
new str[100];
format(str,sizeof str," **PM from %s (%d) to %s (%d): %s",pName,playerid,iName,id,gMessage);
SendClientMessageToAdmins(COLOR_GREEN,str,1);
new str1[100];
format(str1,sizeof str1,"0,5PM from %s (%d) to %s (%d): %s",pName,playerid,iName,id,gMessage);
IRC_GroupSay(gGroupID, channel, str1);
printf(pMessage);
PlayerPlaySound(id,1085,0.0,0.0,0.0);
printf("PM: %s",pMessage);
}
else {
SendClientMessage(playerid,COLOR_YELLOW,"You cannot PM yourself");
}
return 1;
}
Re: Problem with /pm cmd -
iggy1 - 20.12.2010
Change the name of the pName variable because one already exists with that name. strrest is an undefined sybol so you dont have that function in your code.
Re: Problem with /pm cmd -
blackwave - 20.12.2010
... Dont get worry. Try this:
pawn Код:
new pMessage[128];
new gMessage;
new pName[MAX_PLAYER_NAME+1];
new iName[MAX_PLAYER_NAME+1];
dcmd_pm(playerid, params[])
{
new gMessage,id,tmp[256],tmp2[256],Index;
tmp = strtok(params,Index);
tmp2 = strtok(params,Index);
id = strval(tmp);
gMessage = strval(tmp2);
if(!strval(tmp) && !strval(tmp2) || strlen(tmp) > 5)
{
SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (id) (message)");
return 1;
}
if(!strval(tmp2))
{
SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (id) (message)");
return 1;
}
if(!IsPlayerConnected(id))
{
SendClientMessage(playerid,COLOR_YELLOW,"/pm : Bad player ID");
return 1;
}
if(playerid != id)
{
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(pMessage,sizeof(pMessage),"<Private Message to %s(%d): %s",iName,id,gMessage);
SendClientMessage(playerid,COLOR_YELLOW,pMessage);
format(pMessage,sizeof(pMessage),">Private Message from %s(%d): %s",pName,playerid,gMessage);
SendClientMessage(id,COLOR_YELLOW,pMessage);
new str[100];
format(str,sizeof str," **PM from %s (%d) to %s (%d): %s",pName,playerid,iName,id,gMessage);
SendClientMessageToAdmins(COLOR_GREEN,str,1);
new str1[100];
format(str1,sizeof str1,"0,5PM from %s (%d) to %s (%d): %s",pName,playerid,iName,id,gMessage);
IRC_GroupSay(gGroupID, channel, str1);
printf(pMessage);
PlayerPlaySound(id,1085,0.0,0.0,0.0);
printf("PM: %s",pMessage);
}
else
{
SendClientMessage(playerid,COLOR_YELLOW,"You cannot PM yourself");
}
return 1;
}
Re: Problem with /pm cmd -
Face9000 - 20.12.2010
@blackwave,your code returns lots of "pName shadows a variable at precedeing level".
Xeploit,i edited in this way:
Код:
dcmd_pm(playerid, params[])
{
new pMessage[128];
new gMessage[128];
new pName[MAX_PLAYER_NAME+1];
new iName[MAX_PLAYER_NAME+1];
if(!strlen(params) || strlen(params) > 5) {
SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (id) (message)");
return 1;
}
new id = strval(params);
if(!strlen(gMessage)) {
SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (id) (message)");
return 1;
}
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,COLOR_YELLOW,"/pm : Bad player ID");
return 1;
}
if(playerid != id) {
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(pMessage,sizeof(pMessage),"<Private Message to %s(%d): %s",iName,id,gMessage);
SendClientMessage(playerid,COLOR_YELLOW,pMessage);
format(pMessage,sizeof(pMessage),">Private Message from %s(%d): %s",pName,playerid,gMessage);
SendClientMessage(id,COLOR_YELLOW,pMessage);
new str[100];
format(str,sizeof str," **PM from %s (%d) to %s (%d): %s",pName,playerid,iName,id,gMessage);
SendMessageToAdmins(COLOR_GREEN,str);
new str1[100];
format(str1,sizeof str1,"0,5PM from %s (%d) to %s (%d): %s",pName,playerid,iName,id,gMessage);
IRC_GroupSay(gGroupID, IRC_CHANNEL, str1);
printf(pMessage);
PlayerPlaySound(id,1085,0.0,0.0,0.0);
printf("PM: %s",pMessage);
}
else {
SendClientMessage(playerid,COLOR_YELLOW,"You cannot PM yourself");
}
return 1;
}
But if i do /pm 1 test
it show me the normal message: /pm id message
And doesnt work.
Re: Problem with /pm cmd -
iggy1 - 20.12.2010
You will always get the "pName shadows a variable at precedeing level" warning until you rename that variable... no matter what, you need to change the name of that variable.
Re: Problem with /pm cmd -
XePloiT - 20.12.2010
use sscanf...