GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: scott1 le 19 Février 2010, 22:20:19

Titre: Onplayertext
Posté par: scott1 le 19 Février 2010, 22:20:19
Bonsoir, j'ai un soucis, j'ai ce code qui foire
Citer
public OnPlayerText(playerid, text[])
{
   new sendername[MAX_PLAYER_NAME];
   new giveplayer[MAX_PLAYER_NAME];
   new tmp[256];
   new string[256];
   if(Estdanscoffre[playerid] == 1)
   {
           new idx;
          new x_nr[64];
         //x_nr = strtok(cmdtext, idx);
         x_nr = strtok(text, idx);
         if(!strlen(x_nr))
         {
             SendClientMessage(playerid, COLOR_WHITE, "Vous êtes dans votre coffre, vous pouvez:");
             SendClientMessage(playerid, COLOR_WHITE, "fermer, mettrearme, prendrearme, mettrekevlar, prendrekevlar");
             SendClientMessage(playerid, COLOR_WHITE, "mettredrogues, prendredrogues, mettrematos, prendrematos");
             return 1;
         }
         if(strcmp(x_nr,"fermer",true) == 0)
                        { ... }
   }
if (realchat)
   {
       if(gPlayerLogged[playerid] == 0)
       {
           return 0;
         }
      GetPlayerName(playerid, sendername, sizeof(sendername));
      if(!IsPlayerInAnyVehicle(playerid))
      {
         if(PlayerInfo[playerid][pMaskuse] == 1)
         {
            format(string, sizeof(string), "Etranger dit: %s", text);
            ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
            SetPlayerChatBubble(playerid, string, COLOR_FADE1, 20.0, 5000);
            //OnePlayAnim(playerid,"PED","IDLE_CHAT",4.0,0,0,0,0,0);
         }
         else
         {
             format(string, sizeof(string), "%s dit: %s", sendername, text);
             ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
             SetPlayerChatBubble(playerid, string, COLOR_FADE1, 20.0, 5000);
             //OnePlayAnim(playerid,"PED","IDLE_CHAT",4.0,0,0,0,0,0);
         }
      }
      return 0;
   }
   return 1;
}

Quand je fais fermer   

Il y a X dit: fermer

Alors que j'aimerais que ça ne le fasse pas, pourtant j'ai mis des return, je ne sais pas comment faire, merci de votre aide
Titre: Re : Onplayertext
Posté par: cristab le 19 Février 2010, 22:26:13
peu etre comme ceci


else if(Estdanscoffre[playerid] == 0)
         {
             format(string, sizeof(string), "%s dit: %s", sendername, text);
             ProxDetector(20.0, playerid, string,COLOR_FADE1,COLOR_FADE2,COLOR_FADE3,COLOR_FADE4,COLOR_FADE5);
             SetPlayerChatBubble(playerid, string, COLOR_FADE1, 20.0, 5000);
             //OnePlayAnim(playerid,"PED","IDLE_CHAT",4.0,0,0,0,0,0);
         }
Titre: Re : Onplayertext
Posté par: scott1 le 23 Février 2010, 20:03:10
Oui mais non ^^, car la j'ai condenser les infos, mais entre il y a beaucoup d'autre chose, je ne comprend pas, car ceci

if(RegistrationStep[playerid] > 0)
{
    if(RegistrationStep[playerid] == 1)
    {
        new idx;
    tmp = strtok(text, idx);
    if((strcmp("homme", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("homme")))
{
    PlayerInfo[playerid][pSex] = 1;
    SendClientMessage(playerid, COLOR_YELLOW2, "Ok, donc vous êtes un Homme.");
    SendClientMessage(playerid, COLOR_LIGHTRED, "Quelle est votre date de naissance? (Utilisez jj/mm/aaaa)");
    new maleskin;
    maleskin = random(sizeof(CivMalePeds));
    SetPlayerSkin(playerid, maleskin);
    PlayerInfo[playerid][pChar] = maleskin;
    RegistrationStep[playerid] = 2;
    return 0;
}
else if((strcmp("femme", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("femme")))
{
    PlayerInfo[playerid][pSex] = 2;
    SendClientMessage(playerid, COLOR_YELLOW2, "Ok, donc vous êtes une Femme.");
    SendClientMessage(playerid, COLOR_LIGHTRED, "Quelle est votre date de naissance? (Utilisez jj/mm/aaaa)");
    new femaleskin;
    femaleskin = random(sizeof(CivFemalePeds));
    SetPlayerSkin(playerid, femaleskin);
    PlayerInfo[playerid][pChar] = femaleskin;
    RegistrationStep[playerid] = 2;
    return 0;
}
else
{
    SendClientMessage(playerid, COLOR_LIGHTRED, "Êtes vous un Homme ou une Femme? (Tapez ce que vous êtes).");
}
return 0;
}

Je n'ai pas fermer le code, mais quand je repond au questions du tuto, le texte n'est pas envoyé comme je voudrais pour estdanscoffre
Titre: Re : Onplayertext
Posté par: ApocKalipsS le 25 Février 2010, 17:12:19
Il t'envoie quoi quand tu dis ta réponse ?
Titre: Re : Onplayertext
Posté par: scott1 le 25 Février 2010, 18:42:50
il fait

Tupac_Shakur: fermer

mais pas comme sur les rp, tout le monde le voi, comme sur les dm
Titre: Re : Onplayertext
Posté par: Syg le 01 Mars 2010, 14:23:50
Tout est dans le return de la fonction.

Si tu veux que le texte saisi par le joueur soit afficher, tu fais return 1;
Si tu ne veux pas que le texte soit afficher, tu fais return 0;

Pour reprendre très rapidement ton code :
public OnPlayerText(playerid, text[])
{
   if(Estdanscoffre[playerid] == 1)
   {
          new idx;
          new x_nr[64];
         //x_nr = strtok(cmdtext, idx);
         x_nr = strtok(text, idx);
         if(!strlen(x_nr))
         {
             SendClientMessage(playerid, COLOR_WHITE, "Vous êtes dans votre coffre, vous pouvez:");
             SendClientMessage(playerid, COLOR_WHITE, "fermer, mettrearme, prendrearme, mettrekevlar, prendrekevlar");
             SendClientMessage(playerid, COLOR_WHITE, "mettredrogues, prendredrogues, mettrematos, prendrematos");
         }
         if(strcmp(x_nr,"fermer",true) == 0)
         {
            ...
         }
         return 0; // LE TEXTE SAISI PAR LE JOUEUR NE SERA PAS AFFICHE
   }

   ...
   return 1; // DANS TOUS LES AUTRES CAS, LE TEXTE SERA AFFICHE
}

Sinon, il faut que tu supprimes tous les return qui ne servent à rien.

++
Syg
Titre: Re : Onplayertext
Posté par: scott1 le 01 Mars 2010, 18:20:35
Merci ça fonctionne