Jump to content
  • 0

Problema PM


NeO

Question

Salut,am incercat sa iau din scriptul "base" comanda /pm,SA o pun in gamemod.

Am pus la gamemode asa :

	//pm command
#define ADMINFS_MESSAGE_COLOR 0xFF444499
#define PM_INCOMING_COLOR     0xFFFF22AA
#define PM_OUTGOING_COLOR     0xFFCC2299

//
    
	new Message[256];
    new gMessage[256];
	new iName[MAX_PLAYER_NAME+1];


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

		if(!strlen(tmp) || strlen(tmp) > 5) {
			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /pm (id) (message)");
			return 1;
		}

		new id = strval(tmp);
        gMessage = strrest(cmdtext,idx);

		if(!strlen(gMessage)) {
			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Usage: /pm (id) (message)");
			return 1;
		}

		if(!IsPlayerConnected(id)) {
			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"/pm : Bad player ID");
			return 1;
		}

		if(playerid != id) {
			GetPlayerName(id,iName,sizeof(iName));
			GetPlayerName(playerid,pName,sizeof(pName));
			format(Message,sizeof(Message),">> %s(%d): %s",iName,id,gMessage);
			SendClientMessage(playerid,PM_OUTGOING_COLOR,Message);
			format(Message,sizeof(Message),"** %s(%d): %s",pName,playerid,gMessage);
			SendClientMessage(id,PM_INCOMING_COLOR,Message);
			PlayerPlaySound(id,1085,0.0,0.0,0.0);

			printf("PM: %s",Message);

		}
		else {
			SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"You cannot PM yourself");
		}
		return 1;
	}


//
si include-ul gl_common si imi da dau 2 erori ! uitati :
\gamemodes\StuntNEW.pwn(1221) : error 017: undefined symbol "strrest"
C:\gamemodes\StuntNEW.pwn(1221) : error 033: array must be indexed (variable "gMessage")
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


2 Errors.

:-[

si nu situ cum sa le rezolv :-[ :P, va rog frumos,ma ajutati si pe mine ::)...de cand caut comanda asta...

deci,de ce imi da acele erori ,va multumesc mult  !

qdbjz10.png

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

Eu mi-am facut propria comanda /pm, folosind sscanf si zcmd, ii mult mai eficient decat strtok respectiv strcmp.

CMD:pm( playerid, cmdtext[] )

{

     new to[ 128 ], from[ 128 ];

     new sender[ MAX_PLAYER_NAME ], receiver[ MAX_PLAYER_NAME ];

     if ( sscanf( cmdtext, "us", cmdtext[ 0 ], cmdtext[ 1 ] ) || ( cmdtext[ 0 ] == INVALID_PLAYER_ID ) || ( cmdtext[ 0 ] == playerid ) )

         return SendClientMessage( playerid, 0xFFFFFFF, "Usage: /pm <id> <message>" );

         

     GetPlayerName( playerid, sender, sizeof sender );

     GetPlayerName( cmdtext[ 0 ], receiver, sizeof receiver );

     format( from, sizeof from, "PM >> %s(ID: %i): %s", sender, playerid, cmdtext[ 1 ] );

     SendClientMessage( id, 0xFFFFFFFF, from );

     format( to, sizeof to, "PM >> Message sent to %s(ID: %i)", receiver, cmdtext[ 0 ] );

     SendClientMessage( playerid, 0xFFFFFFFF, to );

     return true;

}

EDIT:

    Chiar astazi am gasit o noua metoda mai eficienta de a lucra cu ZCMD. Observa ca nu mai folosesc variabilele pentru ID si MESSAGE, ci doar parametrul cmdtext.

Link to comment
Share on other sites

deci comanda de mai sus este facuta cu zcmd ? 

si este tot la fel ca la celelalte,nu? (ADICA tot in onplayercommandtext o pun) 

da...chiar arata mai usor cu zcmd , o sa incerc si eu sa fac cu zcmd,am auzit ca face si mai putin lag.

Multumesc:D

qdbjz10.png

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.