12.03.2013, 03:04
How to make a /PM command
This is my first tutorial I have ever made.The tutorial is about how to make a /pm command.
Okay, let's start !
Includes
Make sure you have these includes at your top of your script
pawn Код:
#include < a_samp >
// Includes a_samp.inc
#include < zcmd >
// Includes zcmd, made by ZeeX_
#include < sscanf2 >
// Includes sscanf2, made by ******
We will make this :
" /pm ( id/name ) ( message ) "
pawn Код:
CMD:pm( playerid, params[ ] ) // We will create a new command ( /pm )
{ // Opening bracket
return true;
} // Closing bracket
pawn Код:
CMD:pm( playerid, params[ ] ) // We will create a new command ( /pm )
{ // Opening bracket
new // creating new variables
iTarget, // a variable called iTarget
szMsg[ 100 ]; // a variable called szMsg. This will be a string that can carry 100 characters
if ( sscanf( params, "rs[100]", iTarget, szMsg ) )
{ // If the player hasn't entered the player or the message ( r = playerID / name || s = string )
return SendClientMessage( playerid, 0xFF3333AA, "[USAGE]: /pm ( id/name ) ( message )" );
// Sends the player message about the correct command usage.
}
return true;
} // Closing bracket
Now, let's make sure if the player that the sender has entered is connected.
pawn Код:
CMD:pm( playerid, params[ ] ) // We will create a new command ( /pm )
{ // Opening bracket
new // creating new variables
iTarget, // a variable called iTarget
szMsg[ 100 ]; // a variable called szMsg. This will be a string that can carry 100 characters
if ( sscanf( params, "rs[100]", iTarget, szMsg ) )
{ // If the player hasn't entered the player or the message ( r = playerID / name || s = string )
return SendClientMessage( playerid, 0xFF3333AA, "[USAGE]: /pm ( id/name ) ( message )" );
// Sends the player message about the correct command usage.
}
if ( iTarget == INVALID_PLAYER_ID ) // The player is not connected!
{
return SendClientMessage( playerid, 0xFF3333AA, "[ERROR]: That player is not connected!" );
// Sends the player message that he/she has entered a wrong ID.
}
return true;
} // Closing bracket
Now let's start making some variables to create the message!
pawn Код:
CMD:pm( playerid, params[ ] ) // We will create a new command ( /pm )
{ // Opening bracket
new // creating new variables
iTarget, // a variable called iTarget
szMsg[ 100 ]; // a variable called szMsg. This will be a string that can carry 100 characters
if ( sscanf( params, "rs[100]", iTarget, szMsg ) )
{ // If the player hasn't entered the player or the message ( r = playerID / name || s = string )
return SendClientMessage( playerid, 0xFF3333AA, "[USAGE]: /pm ( id/name ) ( message )" );
// Sends the player message about the correct command usage.
}
if ( iTarget == INVALID_PLAYER_ID ) // The player is not connected!
{
return SendClientMessage( playerid, 0xFF3333AA, "[ERROR]: That player is not connected!" );
// Sends the player message that he/she has entered a wrong ID.
}
new
szStr[ 128 ]; // Now, we will create another variable called " szStr ".
// 128 is the max size for client mesages.
new
pName[ MAX_PLAYER_NAME ], // We will create another variable which will store the sender's name
tName[ MAX_PLAYER_NAME ]; // Same as above, except this is to store the target's name
GetPlayerName( playerid, pName, MAX_PLAYER_NAME );
// We will get the sender's name and store it at the pName variable
GetPlayerName( iTarget, tName, MAX_PLAYER_NAME );
// We will get the target's name and store it at the tName variable
return true;
} // Closing bracket
Now, let's start formatting the messages!
pawn Код:
CMD:pm( playerid, params[ ] ) // We will create a new command ( /pm )
{ // Opening bracket
new // creating new variables
iTarget, // a variable called iTarget
szMsg[ 100 ]; // a variable called szMsg. This will be a string that can carry 100 characters
if ( sscanf( params, "rs[100]", iTarget, szMsg ) )
{ // If the player hasn't entered the player or the message ( r = playerID / name || s = string )
return SendClientMessage( playerid, 0xFF3333AA, "[USAGE]: /pm ( id/name ) ( message )" );
// Sends the player message about the correct command usage.
}
if ( iTarget == INVALID_PLAYER_ID ) // The player is not connected!
{
return SendClientMessage( playerid, 0xFF3333AA, "[ERROR]: That player is not connected!" );
// Sends the player message that he/she has entered a wrong ID.
}
new
szStr[ 128 ]; // Now, we will create another variable called " szStr ".
// 128 is the max size for client mesages.
new
pName[ MAX_PLAYER_NAME ], // We will create another variable which will store the sender's name
tName[ MAX_PLAYER_NAME ]; // Same as above, except this is to store the target's name
GetPlayerName( playerid, pName, MAX_PLAYER_NAME );
// We will get the sender's name and store it at the pName variable
GetPlayerName( iTarget, tName, MAX_PLAYER_NAME );
// We will get the target's name and store it at the tName variable
// We will format the message.
format( szStr, sizeof ( szStr ), "[PM from %s]: %s", pName, szMsg );
// %s is used to format strings, the first %s is the player's name ( pName ),
// and the second %s is the message. ( szMsg )
SendClientMessage( iTarget, 0x33FF33AA, szStr );
// Sends the target the PM which the sender has sent.
// We will format another message.
format( szStr, sizeof ( szStr ), "[PM to %s]: %s", tName, szMsg );
// %s is used to format strings, the first %s is the target's name ( tName ),
// and the second %s is the message. ( szMsg )
SendClientMessage( playerid, 0x33FF33AA, szStr );
// Sends the sender message about the message he has sent.
return true;
} // Closing bracket
pawn Код:
#include < a_samp >
// Includes a_samp.inc
#include < zcmd >
// Includes zcmd, made by ZeeX_
#include < sscanf2 >
// Includes sscanf2, made by ******
CMD:pm( playerid, params[ ] ) // We will create a new command ( /pm )
{ // Opening bracket
new // creating new variables
iTarget, // a variable called iTarget
szMsg[ 100 ]; // a variable called szMsg. This will be a string that can carry 100 characters
if ( sscanf( params, "rs[100]", iTarget, szMsg ) )
{ // If the player hasn't entered the player or the message ( r = playerID / name || s = string )
return SendClientMessage( playerid, 0xFF3333AA, "[USAGE]: /pm ( id/name ) ( message )" );
// Sends the player message about the correct command usage.
}
if ( iTarget == INVALID_PLAYER_ID ) // The player is not connected!
{
return SendClientMessage( playerid, 0xFF3333AA, "[ERROR]: That player is not connected!" );
// Sends the player message that he/she has entered a wrong ID.
}
new
szStr[ 128 ]; // Now, we will create another variable called " szStr ".
// 128 is the max size for client mesages.
new
pName[ MAX_PLAYER_NAME ], // We will create another variable which will store the sender's name
tName[ MAX_PLAYER_NAME ]; // Same as above, except this is to store the target's name
GetPlayerName( playerid, pName, MAX_PLAYER_NAME );
// We will get the sender's name and store it at the pName variable
GetPlayerName( iTarget, tName, MAX_PLAYER_NAME );
// We will get the target's name and store it at the tName variable
// We will format the message.
format( szStr, sizeof ( szStr ), "[PM from %s]: %s", pName, szMsg );
// %s is used to format strings, the first %s is the player's name ( pName ),
// and the second %s is the message. ( szMsg )
SendClientMessage( iTarget, 0x33FF33AA, szStr );
// Sends the target the PM which the sender has sent.
// We will format another message.
format( szStr, sizeof ( szStr ), "[PM to %s]: %s", tName, szMsg );
// %s is used to format strings, the first %s is the target's name ( tName ),
// and the second %s is the message. ( szMsg )
SendClientMessage( playerid, 0x33FF33AA, szStr );
// Sends the sender message about the message he has sent.
return true;
} // Closing bracket
p.s: This is my first tutorial