GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: 69scorpion le 24 Septembre 2009, 10:11:01
-
Bonjour voila j'ai fait une commande pour passer le permis automatique avec des questions ou il faut répondre avec un chiffre mon problème c'est que la cmd ne prend pas les chiffres quand je tape "1" il ne valide pas la commande voila un bout de mon code :
new id;
tmp = strtok(text, id);
id = strvalEx(tmp);
if((strcmp("1", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("1")))
{
SendClientMessage(playerid, COLOR_YELLOW2, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
PlayerInfo[playerid][pCarLic] = 0;
TutTime[playerid] = 1;
SetPlayerPos(playerid, -2021.6069,-116.7008,1035.1719);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
return 0;
}
Merci d'avance
-
tu devrait plutot utiliser la callback OnPlayerText
-
Moi j'ai fais une callaback public PermisAuto(playerid, text[])
-
new id;
tmp = strtok(text, id);
id = strval(tmp);
if(id == 1)
{
SendClientMessage(playerid, COLOR_YELLOW2, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
PlayerInfo[playerid][pCarLic] = 0;
TutTime[playerid] = 1;
SetPlayerPos(playerid, -2021.6069,-116.7008,1035.1719);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
return 0;
}
STRCMP compare des array c 'est bien comme tu a fait, mais comme tu est sur que le gars va entrer un chiffre utilise strval et compare id avec le chiffre voulu
-
if(id == 1) >>> si je tape 1 sa devrait marché ??
-
tout a fait sa veut dire
si le joueur tape 1 il a rater son permis par contre
au plus simple tu devrait mettre comme ceci
if(id != Bonne_Reponse)
{
SendClientMessage(playerid, COLOR_YELLOW2, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
PlayerInfo[playerid][pCarLic] = 0;
TutTime[playerid] = 1;
SetPlayerPos(playerid, -2021.6069,-116.7008,1035.1719);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
return 0;
}
else
{
SendClientMessage(playerid,couleur,"text comme quoi il a reussi");
}
tout en definissant en haute de ton script
#define Bonne_Reponse 0 //si la bonne reponse est 0
EDIT tu devrait meme ajouter
if(id >MAX_REPONSE)
{
SendClientMessage(playerid,couleur,"ta reponse doit etre entre la 0 et la "#MAX_REPONSE"");
}
#define MAX_REPONSE 4 //si il a 4 choix
-
Ok j'ai compris donc les réponses a met questions doit tous être au numero 1
-
pas forcement tout dependras comment tu va proceder
-
Ca ne marche pas sa compile sans erreur mais quand je test par exemple je tapez "1" sa me met "1" dans le chat au lieu de validé la réponse.
voici mon code :
public PermisAuto1(playerid, text[])
{
new tmp[256];
{
ClearChatbox(playerid, 10);
new id;
tmp = strtok(text, id);
id = strval(tmp);
if(id >MAX_REPONSE)
{
SendClientMessage(playerid,COLOR_RED,"Ta réponse doit être entre la 1 et la 3");
}
if(id != Mauvaise_Reponse)
{
SendClientMessage(playerid, COLOR_YELLOW2, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
PlayerInfo[playerid][pCarLic] = 0;
SetPlayerPos(playerid, -2021.6069,-116.7008,1035.1719);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
return 0;
}
-
dans id met ca pour voir
id = strval(text);
-
de genre de fonction
PermisAuto1(playerid, text[]) fait penser que tu utilise la callback OnPlayerText je serais toi je reverait ceci car le mieux dans ce cas serais d'utilise la fonction strcmp
-
J'ai déplacé mon code je l'ai mit dans le callback OnPlayerText , Tout les touche marche("1","2") sauf qu'en je tape "3" sa met l'écrire dans le chat ??
Voici mon new code :
else if(PassageCode[playerid] > 0)
{
if (PassageCode[playerid]== 1)
{
ClearChatbox(playerid, 10);
new idx;
tmp = strtok(text, idx);
if ((strcmp("1", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("1")))
{
SendClientMessage(playerid, COLOR_YELLOW2, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
SetPlayerPos(playerid, -2021.6069,-116.7008,1035.1719);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
return 0;
}
else if ((strcmp("2", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("2")))
{
SendClientMessage(playerid, COLOR_YELLOW2, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
SetPlayerPos(playerid, -2021.6069,-116.7008,1035.1719);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
return 0;
}
else if ((strcmp("3", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("3")))
{
SendClientMessage(playerid, COLOR_YELLOW2, "Bonne réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Félicitaions, vous venez de repondre à la 1ère Question.");
PassageCode[playerid] = 2;
SendClientMessage(playerid, COLOR_YELLOW2, "2ème Question.");
SendClientMessage(playerid, COLOR_LIGHTRED, "On roûle sur quelle coté de la route ?");
SendClientMessage(playerid, COLOR_LIGHTRED, "1- Gauche");
SendClientMessage(playerid, COLOR_LIGHTRED, "2- Droite ou Gauche");
SendClientMessage(playerid, COLOR_LIGHTRED, "3- Droite");
SendClientMessage(playerid, COLOR_YELLOW2, "Repondez avec le numero de la reponse!");
}
}
-
Tu as oublié
return 0;à la suite de
SendClientMessage(playerid, COLOR_YELLOW2, "Repondez avec le numero de la reponse!");
++
Syg
-
A oui sa marche Merci je peut peut savoir quelle est la différence entre
return 1; et return 0;
-
return0; empeche l'affichage dans le chat donc ne renvoie pas ce que tu ecrit tandis que le return1; lui te renveras sur le chat ce que tu a taper
en gros return1; renvoi ce que tu tape
return0; ne renvoi rien
-
ah ok merci ;)
-
Bonjour,
Dsl du double post j'ai un autre souci après avoir passer son permis tout ce qu'on tape dans le chat avec la touche T, n'apparait pas (pour celui qui a passé son permis) mais il s'affiche pour les joueurs connectés sur le serveur (GM RP).
Merci
PS : Toujours le même Code.
Edit :
Voila mon code
if(PassageCode[playerid] > 0)
{
if (PassageCode[playerid]== 1)
{
new idx;
tmp = strtok(text, idx);
if ((strcmp("1", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("1")))
{
SendClientMessage(playerid, 0xFF0000FF, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
SetPlayerPos(playerid, 1499.3594,1306.5313,1093.2891);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
TakingLesson[playerid] = 0;
return 0;
}
else if ((strcmp("2", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("2")))
{
SendClientMessage(playerid, 0xFF0000F, "Bonne réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Félicitaions, vous venez de répondre à la 1ère Question.");
PassageCode[playerid] = 2;
SendClientMessage(playerid, COLOR_YELLOW2, "2ème Question:");
SendClientMessage(playerid, COLOR_GREEN, "==============================================");
SendClientMessage(playerid, COLOR_LIGHTRED, "On roûle sur quelle côté de la route ?");
SendClientMessage(playerid, COLOR_LIGHTRED, "1- Droite");
SendClientMessage(playerid, COLOR_LIGHTRED, "2- Droite ou Gauche");
SendClientMessage(playerid, COLOR_LIGHTRED, "3- Gauche");
SendClientMessage(playerid, COLOR_GREEN, "==============================================");
SendClientMessage(playerid, COLOR_YELLOW2, "Répondez en entrant le numero de la réponse!");
return 0;
}
else if ((strcmp("3", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("3")))
{
SendClientMessage(playerid, 0xFF0000FF, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
SetPlayerPos(playerid, 1499.3594,1306.5313,1093.2891);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
TakingLesson[playerid] = 0;
return 0;
}
return 0;
}
else if (PassageCode[playerid]==2)
{
new idx;
tmp = strtok(text, idx);
if ((strcmp("1", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("1")))
{
SendClientMessage(playerid, 0xFF0000F, "Bonne réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Félicitaions, vous venez de repondre à la 2ème Question.");
PassageCode[playerid] = 3;
SendClientMessage(playerid, COLOR_LIGHTRED, "3ème Question:");
SendClientMessage(playerid, COLOR_GREEN, "==============================================");
SendClientMessage(playerid, COLOR_YELLOW2, "Que signifie les deux ligne blanche situer aux intersection de la route.");
SendClientMessage(playerid, COLOR_LIGHTRED, "1- Se se sont les lignes blanches du peintre");
SendClientMessage(playerid, COLOR_LIGHTRED, "2- Elles servent a rien");
SendClientMessage(playerid, COLOR_LIGHTRED, "3- Se sont des stops");
SendClientMessage(playerid, COLOR_GREEN, "==============================================");
SendClientMessage(playerid, COLOR_YELLOW2, "Répondez en entrant le numero de la réponse!");
return 0;
}
else if ((strcmp("2", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("2")))
{
SendClientMessage(playerid, 0xFF0000FF, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
SetPlayerPos(playerid, 1499.3594,1306.5313,1093.2891);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
TakingLesson[playerid] = 0;
return 0;
}
else if ((strcmp("3", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("3")))
{
SendClientMessage(playerid, 0xFF0000FF, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
SetPlayerPos(playerid, 1499.3594,1306.5313,1093.2891);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
TakingLesson[playerid] = 0;
return 0;
}
return 0;
}
else if (PassageCode[playerid]==3)
{
new idx;
tmp = strtok(text, idx);
if ((strcmp("1", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("1")))
{
SendClientMessage(playerid, 0xFF0000FF, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
SetPlayerPos(playerid, 1499.3594,1306.5313,1093.2891);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
TakingLesson[playerid] = 0;
return 0;
}
else if ((strcmp("2", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("2")))
{
SendClientMessage(playerid, 0xFF0000FF, "Mauvaise réponse.");
SendClientMessage(playerid, COLOR_LIGHTRED, "Vous venez de loupé votre permis.");
SetPlayerPos(playerid, 1499.3594,1306.5313,1093.2891);
GameTextForPlayer(playerid, "~r~Permis Non Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
TakingLesson[giveplayerid] = 0;
return 0;
}
else if ((strcmp("3", tmp, true, strlen(tmp)) == 0) && (strlen(tmp) == strlen("3")))
{
SendClientMessage(playerid, 0xFF0000F, "Bonne réponse.");
SendClientMessage(playerid, COLOR_BLUE, "Félicitaions, vous venez d'obtenir votre permis de conduire.");
SetPlayerPos(playerid, 1499.3594,1306.5313,1093.2891);
GameTextForPlayer(playerid, "~b~Permis Obtenu",5000,1);
SetPlayerInterior(playerid,3);
TogglePlayerControllable(playerid, 1);
PlayerInfo[playerid][pCarLic] = 1;
TakingLesson[playerid] = 0;
return 0;
}
}
return 0;
}
-
UPPP
-
Bonjour, Pour afficher ce que tu ecrie dans le chat à la place du dernier return 0; mais return 1;
Cristab te la dit précédemment ce que sa représenté ...
return0; empeche l'affichage dans le chat donc ne renvoie pas ce que tu ecrit tandis que le return1; lui te renveras sur le chat ce que tu a taper
en gros return1; renvoi ce que tu tape
return0; ne renvoi rien
:closedeyes D0os-Nox ;D