Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
Connexion avec identifiant, mot de passe et durée de la session

 
avancée

254730 Messages dans 14037 Fils de discussion- par 6623 Membres - Dernier membre: Magicien

24 Mai 2012 à 14:43:42
GTAOnline.frSan Andreas MultiplayerScripting SA-MP [Pawn center] (Modérateurs: S!m, Xartrick)Commande /slap
Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: Commande /slap  (Lu 307 fois)
0 Membres et 2 Invités sur ce fil de discussion.
koukou777
Hors ligne Hors ligne

Petit nouveau
*

Messages: 23


« 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))
Journalisée
ApocKalipsS
Hors ligne Hors ligne


GTAOnline Addict
*

**** | Une experience GTA IV hors du commun !

Messages: 1092


« Répondre #1 le: 07 Août 2009 à 16:50:47 »

Tu peux le scripter toi même.
Je te donne un bon indice.

Code:
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;
}
Journalisée
koukou777
Hors ligne Hors ligne

Petit nouveau
*

Messages: 23


« Répondre #2 le: 07 Août 2009 à 16:52:04 »

Hum, moi et le scriptage, sa fait 2 :S
Journalisée
ApocKalipsS
Hors ligne Hors ligne


GTAOnline Addict
*

**** | Une experience GTA IV hors du commun !

Messages: 1092


« Répondre #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 :

Code:
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;
   }
Journalisée
Ssk
Développeur d'Open SA-MP
Hors ligne Hors ligne


Sous-admin
GTAOnline Legend
*

Open-SA-MP - Unlimited Experience

Messages: 3731


WWW



sasuke78200

« Répondre #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
Code:
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 )
« Dernière édition: 07 Août 2009 à 17:29:08 par sasuke78200 » Journalisée






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


GTAOnline Addict
*

**** | Une experience GTA IV hors du commun !

Messages: 1092


« Répondre #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é.
Journalisée
S!m
Hors ligne Hors ligne


Moderateur
GTAOnline Fan Boy
*

Messages: 2260


« Répondre #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:

Code:
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++
Journalisée





Pages: [1]   Haut de page
Imprimer
Aller à:  

Theme créé par padexx et modifié par GTAOnline.fr
Page générée en 0.132 secondes avec 22 requêtes.
Forum GTAOnline.fr 2.0 | Design par : Lalu et GtaManiac
Merci a toute la communaute pour son support !
Copyright © 2004-2012 - GTAOnline.fr | GTAPro.com | Contact