SA-MP Forums Archive
Problem with /pm cmd - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: Problem with /pm cmd (/showthread.php?tid=200898)



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...