GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: [T_StAfF]Benji le 03 Novembre 2009, 02:05:39
-
Salut , je vais vous expliquer comment activer le private message dans SA-MP 0.3
Donc tout d'abord nous allons ajouter sa en haut du script
// Defines
#define ADMINFS_MESSAGE_COLOR 0xFF444499
#define PM_INCOMING_COLOR 0xFFFF22AA
#define PM_OUTGOING_COLOR 0xFFCC2299
// news
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;
Ensuite nous allons ajouter la commande :
if(strcmp("/pm", cmd, true) == 0)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5) {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Utilisation : /pm [ID] [MESSAGE]");
return 1;
}
new id = strval(tmp);
gMessage = strrest(cmdtext,idx);
if(!strlen(gMessage)) {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"Utilisation : /pm [ID] [MESSAGE]");
return 1;
}
if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,ADMINFS_MESSAGE_COLOR,"L'ID que tu as saisie est incorrecte.");
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,"Tu ne pas pas t'envoyé de PM.");
}
return 1;
}
Et voila , vous avez activez le private message !
PS : Je pense grandement que l'identation est a refaire ^^
++
[StAfF]Benji
-
plus simple il suffit de prendre le base.pwn mais a savoir il y a plus simple pour ce genre de code avec le SendPlayerMessageToPlayer http://wiki.sa-mp.com/wiki/SendPlayerMessageToPlayer (http://wiki.sa-mp.com/wiki/SendPlayerMessageToPlayer)
-
Le problème de SendPlayerMessageToPlayer c'est que l'affichage dans le chat se fait de la même façon que pour un message normal, la seule différence c'est qu'un seul joueur peu le voir. Mais il ne peut pas faire la différence entre un message envoyé à tout le monde et un message qui n'est destiné qu'à lui même (il risque donc de répondre sur le chat public).
L'avantage du vrai PM c'est que c'est clairement indiqué et celui qui reçoit sait qu'il est le seul destinataire.
++
Syg
-
j'avais pas penser a sa
-
lol, c'est le base.pwn en traduit c'est tout ^^. Mais c'est sympa de partager l'astuce
-
ne pas oublier
#include "../include/gl_common.inc"
ou bien
stock strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
stock strrest(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[128];
while ((index < length) && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}