• 04 Juin 2026, 23:36:26


Auteur Sujet: Commande /slap  (Lu 1808 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne koukou777

  • *
  • Nouveau
  • Messages: 23
    • Voir le profil
Commande /slap
« le: 07 Août 2009, 16:27:53 »
Bonjour,

J'ai un serveur Race, et j'aimerais avoir la commande /slap svp.
Pour se mettre admin il faut juste se connecte en rcon.

Merci bien. (( Le serveur est spécial race, rien d'autre))

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Commande /slap
« Réponse #1 le: 07 Août 2009, 16:50:47 »
Tu peux le scripter toi même.
Je te donne un bon indice.

if(strcmp(cmd, "/slap", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "UTTILISATION: /slap [playerid/PartOfName]");
return 1;
}
new playa;
new Float:x, Float:y, Float:z;
playa = ReturnUser(tmp);
if(IsPlayerAdmin(playerid))
{
    if(IsPlayerConnected(playa))
    {
        if(playa != INVALID_PLAYER_ID)
        {
        //Prend la position du joueur GetPlayerPos
            //PlaceLejoueur à Z+5 SetPlayerPos
            //Joue un son
}
}
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, "Vous n'êtes pas autoriser à utiliser cette commande !");
}
}
return 1;
}

Hors ligne koukou777

  • *
  • Nouveau
  • Messages: 23
    • Voir le profil
Re : Commande /slap
« Réponse #2 le: 07 Août 2009, 16:52:04 »
Hum, moi et le scriptage, sa fait 2 :S

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Commande /slap
« Réponse #3 le: 07 Août 2009, 16:57:34 »
Ici, on ne donne pas, on aide.
Et je t'es déjà beaucoup aider.
Bref, je vais quand même te le donner en t'expliquant :

GetPlayerPos(playa, x, y, z);//Prend la position du joueur
SetPlayerPos(playa, x, y, z+5);//Le place au même endroit mais 5 metre plus haut (Z étant la hauteur).
PlayerPlaySound(playa, 1130, x, y, z+5);// joue le son ID1130 à la position du joueur

Donc, le résultat :


if(strcmp(cmd, "/slap", true) == 0)//Si la commande est éxécutée
   {
       if(IsPlayerConnected(playerid))//Si le joueur est connécté
       {
         tmp = strtok(cmdtext, idx);
         if(!strlen(tmp))// Si la syntaxe est mauvaise
         {
            SendClientMessage(playerid, COLOR_GRAD2, "UTTILISATION: /slap [playerid/PartOfName]");//envoie le message
            return 1;
         }
         new playa;//Définie le joueur qui va être slapé.
         new Float:x, Float:y, Float:z;//définie X, Y, et Z.
         playa = ReturnUser(tmp);
         if(IsPlayerAdmin(playerid))//Si le joueur est admin
         {
             if(IsPlayerConnected(playa))//si le joueur slapé est connecté
             {
                 if(playa != INVALID_PLAYER_ID)//Si l'ID du joueur n'est pas mauvaise
                 {
                                                            GetPlayerPos(playa, x, y, z);//Prend la position du joueur
                  SetPlayerPos(playa, x, y, z+5);//Le place au même endroit mais 5 metre plus haut (Z étant la hauteur).
                  PlayerPlaySound(playa, 1130, x, y, z+5);// joue le son ID1130 à la position du joueur
               }
            }
         }
         else//Ou alors (si il n'est pas admin)
         {
            SendClientMessage(playerid, COLOR_GRAD1, "Vous n'êtes pas autoriser à utiliser cette commande !");//affiche ce message
         }
      }
      return 1;
   }

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Commande /slap
« Réponse #4 le: 07 Août 2009, 17:20:29 »
t as commande est un peu bizarre dans la premiere condition tu regarde si le joueur qui tape la cmd est connecter( c' est un peu bete il est connecter puisque il tape la cmd).



Voila la bonne est simple commande
if(strcmp(cmd, "/slap", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
return SendClientMessage(playerid, COLOR_GRAD2, "UTTILISATION: /slap playerid");
}
new playa = strval(tmp);
new Float:x, Float:y, Float:z;
if(!IsPlayerAdmin(playerid))
{
    return SendClientMessage(playerid, COLOR_GRAD1, "Vous n'êtes pas autoriser à utiliser cette commande !");
}
    if(IsPlayerConnected(playa))
    {
GetPlayerPos(playa, x, y, z);//Prend la position du joueur
SetPlayerPos(playa, x, y, z+5);//Le place au même endroit mais 5 metre plus haut (Z étant la hauteur).
PlayerPlaySound(playa, 1130, x, y, z+5);// joue le son ID1130 à la position du joueur
}
return 1;
}

Et la ca doit etre bon (et optimiser aussi )
« Modifié: 07 Août 2009, 17:29:08 par sasuke78200 »



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Commande /slap
« Réponse #5 le: 07 Août 2009, 18:39:26 »
Oui, enfin bon, j'ai reprit ca de mon LARP, et je l'ai pas modifié.

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Commande /slap
« Réponse #6 le: 07 Août 2009, 23:27:00 »
Salut,

pour ce qui est d'optimiser, porté à faire 2 ou 3 changements dans l'ordre d'exécution des différentes parties de la commande...

 - faire le test IsPlayerAdmin en premier
 - ensuite récupération de l'ID du joueur à punir
 - ensuite tester si ce joueur est connecté (envoyer un message cas échéant)
 - punir + message

ce qui donne approximativement ceci:

if(strcmp(cmd, "/slap", true) == 0)
{
if(!IsPlayerAdmin(playerid))
{
SendClientMessage(playerid, 0xFF0000FF/*couleur rouge*/, "Vous n'êtes pas autoriser à utiliser cette commande !");
return 1;
}
/*ajouter new tmp[128], idx; si les variables n'est pas déjà déclarée*/ tmp = strtok(cmdtext, idx);
//ps. ici on connait déjà la position du paramètre, on peut donc éviter l'appel à strtok en utilisant: cmdtext[6]
if(!strlen(tmp))//strlen est très rapide si le string est court, mais lent s'il est long, il est plus judicieu d'utiliser if(!cmdtext[6]) ou if(tmp[0] == 0)
{
SendClientMessage(playerid, COLOR_GRAD2, "UTTILISATION: /slap playerid");
return 1;
}
new playa = strval(tmp);//rien à dire ici
if(IsPlayerConnected(playa))
{
new Float:x, Float:y, Float:z;
GetPlayerPos(playa, x, y, z);//Prend la position du joueur
SetPlayerPos(playa, x, y, z+5);//Le place au même endroit mais 5 metre plus haut (Z étant la hauteur).
PlayerPlaySound(playa, 1130, x, y, z+5);// joue le son ID1130 à la position du joueur
GetPlayerName(playa, tmp, MAX_PLAYER_NAME);
format(tmp, sizeof(tmp),"Tu as slappé le joueur %s (ID: %d)", tmp, playa);
SendClientMessage(playerid, 0x00FF00FF, tmp);//on envoie un message
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "Ce joueur n'est pas connecté!");
}
return 1;
}

voilà

++Sim++