GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Micka 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 :
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!
-
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 (http://wiki.sa-mp.com/wiki/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é.
}
-
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 ?
-
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);
}
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;
}