• 28 Juin 2025, 17:38:45


Auteur Sujet: Problème pour créer une commande  (Lu 1576 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Micka

  • *
  • Gangster
  • Messages: 1016
    • Voir le profil
    • Planet-Ados
Problème pour créer une commande
« le: 02 Janvier 2012, 11:45:48 »
Bonjour à tous,
Voilà je débute donc en PWN, je souhaite créer une commande où les admins connectés pourront parler "Admin : message", pour cela j'ai pris comme modèle la commande /me du include, en y rajoutant la vérif si le joueur a le niveau de pouvoirs qu'il faut (lvl 3), en enlevant le paramètre "Name", puisque dans le message "Admin", on précisera pas le nom de l'admin.

Voilà mon code :

COMMAND:atext(playerid,params[])
{
// Setup local variables
new Msg[128], Message[128];

// Send the command to all admins so they can see it
SendAdminText(playerid, "/atext", params);

// Check if the player has logged in
if (APlayerData[playerid][LoggedIn] == true)
{
// Check if the player's admin-level is at least 3
if (APlayerData[playerid][PlayerLevel] >= 3)
{
if (sscanf(params, "s[128]", Message)) SendClientMessage(playerid, 0xFF0000AA, "Utilisation: \"/atext <Message>\"");
else
{
// Check if the player isn't muted
if (APlayerData[playerid][Muted] == false)
{
format(Msg, sizeof(Msg), "Admin : %s", Message);
SendClientMessageToAll(0xFF6347FF, Msg);
}
else
SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Vous ne pouvez toujours pas écrire");
)
}
else
SendClientMessage(playerid, 0xFF0000FF, "Vous n'avez pas les droits requis");
)
else
return 0;

// Let the server know that this was a valid command
return 1;
}

Les erreurs :

Citer
D:\...\Serveur SAMP\PPC_Trucking6\pawno\include\PPC_PlayerCommands.inc(4993) : warning 217: loose indentation
D:\...\Serveur SAMP\PPC_Trucking6\pawno\include\PPC_PlayerCommands.inc(4993) : error 029: invalid expression, assumed zero
D:\...\Serveur SAMP\PPC_Trucking6\pawno\include\PPC_PlayerCommands.inc(4995) : warning 217: loose indentation
D:\...\Serveur SAMP\PPC_Trucking6\pawno\include\PPC_PlayerCommands.inc(4995) : error 029: invalid expression, assumed zero
D:\...\Serveur SAMP\PPC_Trucking6\pawno\include\PPC_PlayerCommands.inc(4996) : warning 217: loose indentation
D:\...\Serveur SAMP\PPC_Trucking6\pawno\include\PPC_PlayerCommands.inc(4997) : warning 217: loose indentation
D:\...\Serveur SAMP\PPC_Trucking6\pawno\include\PPC_PlayerCommands.inc(4997) : error 029: invalid expression, assumed zero
D:\...\Serveur SAMP\PPC_Trucking6\pawno\include\PPC_PlayerCommands.inc(4997 -- 4998) : warning 215: expression has no effect
D:\...\Serveur SAMP\PPC_Trucking6\pawno\include\PPC_PlayerCommands.inc(4998) : error 001: expected token: ";", but found "else"
D:\...\Serveur SAMP\PPC_Trucking6\pawno\include\PPC_PlayerCommands.inc(4998) : error 029: invalid expression, assumed zero
D:\...\Serveur SAMP\PPC_Trucking6\pawno\include\PPC_PlayerCommands.inc(4998) : fatal error 107: too many error messages on one line


(... : chemin tronqué pour plus de clarté)

Merci par avance!
« Modifié: 02 Janvier 2012, 11:49:11 par Phoenix »

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Problème pour créer une commande
« Réponse #1 le: 02 Janvier 2012, 11:55:27 »
Si je comprends bien, tu veux que la mention Admin apparaît quand un administrateur parle, pour cela, tu peux passer par la fonction évènementielle OnPlayerText.

public OnPlayerText(playerid, text[])
{
    new sMessage[128], // Limite de SAMP -- I/O: 128 caractères maximum.
        sUsername[MAX_PLAYER_NAME];
   
    if (APlayerData[playerid][PlayerLevel] >= 3)
    {
        GetPlayerName(playerid, sUsername, sizeof (sUsername));
        format(sMessage, sizeof (sMessage), "Administrateur %s: %s", sUsername, text);
        SendPlayerMessageToAll(playerid, sMessage);
       
        return 0; // Permet de ne pas envoyer le message par défaut.
    }
   
    return 1; // Le message par défaut (Username: Message) est envoyé.
}

Hors ligne Micka

  • *
  • Gangster
  • Messages: 1016
    • Voir le profil
    • Planet-Ados
Re : Problème pour créer une commande
« Réponse #2 le: 02 Janvier 2012, 12:14:56 »
Le truc c'est que je voudrais l'intégrer avec les autres commandes, dans l'Include concerné, à savoir qui commence tous par :
COMMAND:atext(playerid,params[])
{

Comment procéder ?

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Problème pour créer une commande
« Réponse #3 le: 02 Janvier 2012, 12:22:17 »
Tu peux le faire, mais cela ne sera pas une commande.
Tu peux pas exemple garder ta fonction à l'intérieur et faire un appel à ta fonction directement dans le script ce qui donnerait un truc comme ça.


// Pensez à inclure l'include :p

public OnPlayerText(playerid, text[])
{
     return IncludeFunction(playerid, text);
}

Code: (Include) [Sélectionner]
public IncludeFunction(playerid, text[])
{
    new sMessage[128], // Limite de SAMP -- I/O: 128 caractères maximum.
        sUsername[MAX_PLAYER_NAME];
   
    if (APlayerData[playerid][PlayerLevel] >= 3)
    {
        GetPlayerName(playerid, sUsername, sizeof (sUsername));
        format(sMessage, sizeof (sMessage), "Administrateur %s: %s", sUsername, text);
        SendPlayerMessageToAll(playerid, sMessage);
       
        return 0;
    }
   
    return 1;
}