/pm [id or name] [text/message] +REP+
#1

Can someone make me a /pm that will accept the ID or the name when PM'ing someone? I also DON'T want it to be a pop up box. I just want it to be in the chat text box. I want the incoming messages and the outgoing messages to be yellow. Here's something I have already but it won't let me use the username. If I type in a username, it automatically counts it as ID 0 and it says I can't PM myself. My already made code:

Код:
#include <a_samp>
#include "../include/gl_common.inc"

#define COLOR_YELLOW 0xFFFF00AA

//------------------------------------------------

public OnFilterScriptInit()
{
	print("Private Message Script Loaded");
	return 1;
}

//------------------------------------------------

public OnPlayerCommandText(playerid, cmdtext[])
{
	new cmd[256];
	new	tmp[256];
	new Message[256];
	new gMessage[256];
	new pName[MAX_PLAYER_NAME+1];
	new iName[MAX_PLAYER_NAME+1];
	new	idx;
	
	cmd = strtok(cmdtext, idx);

	// PM Command
	if(strcmp("/pm", cmd, true) == 0)
	{
		tmp = strtok(cmdtext,idx);
		
		if(!strlen(tmp) || strlen(tmp) > 5) {
			SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (ID) (message)");
			return 1;
		}
		
		new id = strval(tmp);
        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 : You Entered a Wrong ID!");
			return 1;
		}
		
		if(playerid != id) {
			GetPlayerName(id,iName,sizeof(iName));
			GetPlayerName(playerid,pName,sizeof(pName));
			format(Message,sizeof(Message),"PM Sent to %s(%d): %s",iName,id,gMessage);
			SendClientMessage(playerid,COLOR_YELLOW,Message);
			format(Message,sizeof(Message),"PM From %s(%d): %s",pName,playerid,gMessage);
			SendClientMessage(id,COLOR_YELLOW,Message);
			PlayerPlaySound(id,1085,0.0,0.0,0.0);
			
			printf("PM: %s",Message);
			
		}
		else {
			SendClientMessage(playerid,COLOR_YELLOW,"You Cannot Private Message Yourself.");
		}
		return 1;
	}


	
	return 0;
}
Reply
#2

And Reply!

pawn Код:
#include <a_samp>
#include "../include/gl_common.inc"

#define COLOR_YELLOW                0xFFFF00AA
#define DIALOG_REPLY                50


new PlayerRecevied[MAX_PLAYERS];
public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[128];
    new tmp[128];
    new idx;

    cmd = strtok(cmdtext, idx);
    if(!strcmp("/pm", cmd, true))
    {
        tmp = strtok(cmdtext,idx);

        if(!strlen(tmp) || strlen(tmp) > 5)
            return SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (ID) (message)");

        if(!strlen(strrest(cmdtext,idx)))
            return SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (ID) (message)");

        if(!IsPlayerConnected(strval(tmp)))
            return SendClientMessage(playerid,COLOR_YELLOW,"/pm : You Entered a Wrong ID!");

        if(playerid !=  strval(tmp))
            return SendClientMessage(playerid,COLOR_YELLOW,"You Cannot Private Message Yourself.");
       
        PlayerRecevied[strval(tmp] = playerid;
        PlayerPlaySound(strval(tmp),1085,0.0,0.0,0.0);
       
        ShowPlayerDialog(playerid, DIALOG_REPLY, DIALOG_STYLE_INPUT, "~ New Message ~", strrest(cmdtext,idx), "Reply", "Okay");
        return 1;
    }
    return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REPLY)
    {
        if(response)
        {
            if(!strlen(inputtext))
            {
                SendClientMessage(playerid, -1,"||>> Put message !");
                ShowPlayerDialog(playerid, DIALOG_REPLY, DIALOG_STYLE_INPUT, "~ New Message ~", strrest(cmdtext,idx), "Reply", "Okay");
                return true;
            }

            ShowPlayerDialog(PlayerRecevied[playerid], DIALOG_REPLY, DIALOG_STYLE_INPUT, "~ New Message ~", inputtext, "Reply", "Okay");
        }
    }
    return true;
}
Reply
#3

I suggest you to use ZCMD, it's easier to use/understand.
Reply
#4

Quote:
Originally Posted by DarkScripter
Посмотреть сообщение
And Reply!

pawn Код:
#include <a_samp>
#include "../include/gl_common.inc"

#define COLOR_YELLOW                0xFFFF00AA
#define DIALOG_REPLY                50


new PlayerRecevied[MAX_PLAYERS];
public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[128];
    new tmp[128];
    new idx;

    cmd = strtok(cmdtext, idx);
    if(!strcmp("/pm", cmd, true))
    {
        tmp = strtok(cmdtext,idx);

        if(!strlen(tmp) || strlen(tmp) > 5)
            return SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (ID) (message)");

        if(!strlen(strrest(cmdtext,idx)))
            return SendClientMessage(playerid,COLOR_YELLOW,"Usage: /pm (ID) (message)");

        if(!IsPlayerConnected(strval(tmp)))
            return SendClientMessage(playerid,COLOR_YELLOW,"/pm : You Entered a Wrong ID!");

        if(playerid !=  strval(tmp))
            return SendClientMessage(playerid,COLOR_YELLOW,"You Cannot Private Message Yourself.");
       
        PlayerRecevied[strval(tmp] = playerid;
        PlayerPlaySound(strval(tmp),1085,0.0,0.0,0.0);
       
        ShowPlayerDialog(playerid, DIALOG_REPLY, DIALOG_STYLE_INPUT, "~ New Message ~", strrest(cmdtext,idx), "Reply", "Okay");
        return 1;
    }
    return 0;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REPLY)
    {
        if(response)
        {
            if(!strlen(inputtext))
            {
                SendClientMessage(playerid, -1,"||>> Put message !");
                ShowPlayerDialog(playerid, DIALOG_REPLY, DIALOG_STYLE_INPUT, "~ New Message ~", strrest(cmdtext,idx), "Reply", "Okay");
                return true;
            }

            ShowPlayerDialog(PlayerRecevied[playerid], DIALOG_REPLY, DIALOG_STYLE_INPUT, "~ New Message ~", inputtext, "Reply", "Okay");
        }
    }
    return true;
}
Thanks and I come up with these errors:

Код:
error 001: expected token: ",", but found "]"
error 017: undefined symbol "cmdtext"
Can you also add /r [message] to reply to the last message? Thanks so much!
Reply
#5

can anyone please help me?
Reply
#6

IF you use ZCMD, read the following! If not, don't:

In my signature, you'll be able to see in the second tutorial a command which fits your expectations!
Reply
#7

pawn Код:
PlayerRecevied[strval(tmp)] = playerid;

ShowPlayerDialog(playerid, DIALOG_REPLY, DIALOG_STYLE_INPUT, "~ New Message ~", inputtext, "Reply", "Okay");
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)