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
-
Bonsoir, j'ai un soucis, j'ai ce code qui foire
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
-
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);
}
-
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
-
Il t'envoie quoi quand tu dis ta réponse ?
-
il fait
Tupac_Shakur: fermer
mais pas comme sur les rp, tout le monde le voi, comme sur les dm
-
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
-
Merci ça fonctionne