GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: koukou777 le 14 Mars 2010, 16:47:55
-
Bonjour,
J'ai un problème, j'ai fait une boite de dialogue, qui fait que quand ont donne une ammende, sa nous affiche dans une boite : Ammende : Vous avez reçu blablabla ..
Le problème, c'est que je n'arrive pas a faire a ce que quand ont appui sur le boutton "Accepter" Sa paye l'ammende, et quand ont appui sur le boutton "Refuser" Sa ne paye pas l'ammende.
En gros, mon seul soucis c'est que je n'arrive pas a scripter le "quand ont appui sur ce bouton, celà se passe)
format(string, sizeof(string), "* Officier %s vous a donner une ammende de $%d, raison: %s", sendername, moneys, (result));
ShowPlayerDialog(giveplayerid,8888,DIALOG_STYLE_MSGBOX,"Amende",string,"Accepter","Refuser");
J'ai une autre botie de dialogue pour le mot de passe, et il y a un : public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Ou il y a toutes les réponses des dialogues !
Merci de m'aider.
-
Merci, alors j'ai fait sa pour que sa accepte l'amende que le flic lui donne :
if(dialogid==8888) {
if(Accepter)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
ammendeOffer[giveplayerid] = playerid;
ammendeMoney[giveplayerid] = moneys;
SendClientMessage(playerid, COLOR_BLUE, "[Police] %$ a Accepter l'amende", giveplayer);
SendClientMessage(giveplayerid, COLOR_BLUE, "[Police] %$ a Accepter l'amende", giveplayer);
}
else {
SendClientMessage(playerid, COLOR_BLUE, "[Police] %$ a Refuser l'amende", giveplayer);
}
}
return 1;
Ma commande de pv :
if(strcmp(cmd, "/ammende", true) == 0 || strcmp(cmd, "/pv", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(gTeam[playerid] != 2)
{
SendClientMessage(playerid, COLOR_GREY, " Vous n'êtes pas Flic!");
return 1;
}
if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMembre] == 1)
{
SendClientMessage(playerid, COLOR_GREY, " Vous n'êtes pas en service");
return 1;
}
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "[Utilisation:] /ammende [playerid/Prénom_Nom] [prix] [raison]");
return 1;
}
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "[Utilisation:] /ammende [playerid/Prénom_Nom] [prix] [raison]");
return 1;
}
moneys = strval(tmp);
if(moneys < 1 || moneys > 99999) { SendClientMessage(playerid, COLOR_GREY, " L'ammende doit être de 1 a 99999 !"); return 1; }
if(IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
if (ProxDetectorS(8.0, playerid, giveplayerid))
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "[Utilisation:] /ammende [playerid/Prénom_Nom] [prix] [raison]");
return 1;
}
format(string, sizeof(string), "* Vous avez donner une ammende a %s de $%d, raison: %s", giveplayer, moneys, (result));
SendClientMessage(playerid, COLOR_WHITE, string);
format(string, sizeof(string), "* Officier %s vous a donner une ammende de $%d, raison: %s", sendername, moneys, (result));
ShowPlayerDialog(giveplayerid,8888,DIALOG_STYLE_MSGBOX,"Amende",string,"Accepter","Refuser");
ammendeOffer[giveplayerid] = playerid;
ammendeMoney[giveplayerid] = moneys;
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Le joueur n'est pas vers vous !");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Le joueur n'est pas en ligne !");
return 1;
}
}
return 1;
}
Et les erreurs qui me met :
C:\Users\Killian\Desktop\Manhattan City\Millenium City\gamemodes\sfrp3.pwn(50713) : error 017: undefined symbol "Accepter"
C:\Users\Killian\Desktop\Manhattan City\Millenium City\gamemodes\sfrp3.pwn(50715) : error 017: undefined symbol "giveplayerid"
C:\Users\Killian\Desktop\Manhattan City\Millenium City\gamemodes\sfrp3.pwn(50715) : error 017: undefined symbol "giveplayer"
C:\Users\Killian\Desktop\Manhattan City\Millenium City\gamemodes\sfrp3.pwn(50715) : error 029: invalid expression, assumed zero
C:\Users\Killian\Desktop\Manhattan City\Millenium City\gamemodes\sfrp3.pwn(50715) : fatal error 107: too many error messages on one line
La ligne 50715 c'est elle : GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
Je sais pas si ma métode est bonne pour que sa affiche la boite pour accepter/refuser de payer l'amende. Si ma métode n'est pas bonne, que dois-je faire ?
Je suis juste perdu sur se system de boite. C'est mon dernier soucis que je veut absolument.
Merci de m'aider.
-
Merci, mais il y a toujours ces erreurs : C:\Users\Killian\Desktop\Manhattan City\Millenium City\gamemodes\sfrp3.pwn(50715) : error 017: undefined symbol "giveplayerid"
C:\Users\Killian\Desktop\Manhattan City\Millenium City\gamemodes\sfrp3.pwn(50715) : error 017: undefined symbol "giveplayer"
C:\Users\Killian\Desktop\Manhattan City\Millenium City\gamemodes\sfrp3.pwn(50715) : error 029: invalid expression, assumed zero
C:\Users\Killian\Desktop\Manhattan City\Millenium City\gamemodes\sfrp3.pwn(50715) : fatal error 107: too many error messages on one line
Je n'arrive pas a inclure ce giveplayer.
-
Merci, mais il y a toujours ces erreurs : C:\Users\Killian\Desktop\Manhattan City\Millenium City\gamemodes\sfrp3.pwn(50715) : error 017: undefined symbol "giveplayerid"
C:\Users\Killian\Desktop\Manhattan City\Millenium City\gamemodes\sfrp3.pwn(50715) : error 017: undefined symbol "giveplayer"
;) new giveplayer,giveplayerid;
-
Résolu, mais un autre problème survien !
Quand je fait /accepter ammende, l'amende ne se paye pas ! Enfin l'argent n'est retirer ni de la banque, ni de notre argent de poche !
else if(strcmp(x_job,"ammende",true) == 0)
{
if(ammendeOffer[playerid] < 999)
{
if(IsPlayerConnected(ammendeOffer[playerid]))
{
if (ProxDetectorS(5.0, playerid, ammendeOffer[playerid]))
{
GetPlayerName(ammendeOffer[playerid], giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* [POLICE] Vous payer l'ammende de $%d a l'officier %s.", ammendeMoney[playerid], giveplayer);
SendClientMessage(playerid, COLOR_WHITE, string);
format(string, sizeof(string), "* [POLICE] %s a accepter de payer l'ammende de $%d.", sendername, ammendeMoney[playerid]);
SendClientMessage(ammendeOffer[playerid], COLOR_WHITE, string);
SafeGivePlayerMoney(playerid, - ammendeMoney[playerid]);
SafeGivePlayerMoney(ammendeOffer[playerid], ammendeMoney[playerid]);
ammendeOffer[playerid] = 999;
ammendeMoney[playerid] = 0;
return 1;
}
else
{
SendClientMessage(playerid, COLOR_GREY, " L'officier n'est pas vers vous!");
return 1;
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Personne donner une ammende !");
return 1;
}
}
Merci de l'aide futur
-
Montre nous la fonction : SafeGivePlayerMoney