Detaljan opis problema:Jednostavno kad se neko loguje,ako ukuca pogresnu lozinku otvorit ce mu da je lozinka pogresna.A ako klikne samo enter prodje dalje bez problema,tj. samo se uloguje.
Dio skripte: if(Svasta[playerid][loginpokusaji] == 0)
{
Svasta[playerid][loginpokusaji]++;
new stringb[512];
format(stringb, sizeof(stringb), ""COL_AGRP"Dobrodosli nazad "COL_BIJELA"%s, "COL_AGRP"na "COL_BIJELA"Arena Gaming RolePlay "COL_AGRP"server.\nU prazni prostor ispod unesite vasu lozinku:\nImate jos "COL_BIJELA"3 "COL_AGRP"pokusaja", GetName(playerid));
SPD(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, ""COL_BIJELA"Login", stringb, "Login", "Kick");
}
else if(Svasta[playerid][loginpokusaji] == 1)
{
Svasta[playerid][loginpokusaji]++;
new stringb[512];
format(stringb, sizeof(stringb), ""COL_AGRP"Dobrodosli nazad "COL_BIJELA"%s, "COL_AGRP"na "COL_BIJELA"Arena Gaming RolePlay "COL_AGRP"server.\nU prazni prostor ispod unesite vasu lozinku:\nImate jos "COL_BIJELA"2 "COL_AGRP"pokusaja", GetName(playerid));
SPD(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, ""COL_BIJELA"Login", stringb, "Login", "Kick");
}
else if(Svasta[playerid][loginpokusaji] == 2)
{
Svasta[playerid][loginpokusaji]++;
new stringb[512];
format(stringb, sizeof(stringb), ""COL_AGRP"Dobrodosli nazad "COL_BIJELA"%s, "COL_AGRP"na "COL_BIJELA"Arena Gaming RolePlay "COL_AGRP"server.\nU prazni prostor ispod unesite vasu lozinku:\nImate jos "COL_BIJELA"1 "COL_AGRP"pokusaj", GetName(playerid));
SPD(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, ""COL_BIJELA"Login", stringb, "Login", "Kick");
}
else if(Svasta[playerid][loginpokusaji] == 3)
{
Svasta[playerid][loginpokusaji] = 0;
apac_Kick(playerid, "AngelAC: Pogrijesili ste 3 puta lozinku. Kick.");
}
}
}
}
Neke slike/video za lakse dobivanje pomoci(neobavezno):
Nije mi baš najjasnije..
Ako ukuca jednom i bude mu pogrešna moći će dalje? Ili nakon 3 puta?Ako je nakon 3 puta postavi nam funkciju
apac_Kick
Jednostavno,ako ukucas lozinku koja nije tacna npr. trenutna lozinka je 123 ti ukucas 1234,otvorit ce ti da je pogresna lozinka.A kad se ovako ulogujes samo kliknes enter i udjes bez da ti otvori da je lozinka netacna ili sl.
Definiro sam neke funkcije,pa vidi da li valja ili treba jos nesto.
stock apac_Kick(playerid, razlog[])
{
SetTimerEx("KickTimer", 300, false, "d", playerid);
SendClientMessage(playerid, COLOR_APRP, razlog);
return 1;
}
if(dialogid == DIALOG_LOGIN)
{
if(!response) return apac_Kick(playerid, "AngelAC: "COL_BIJELA"Prekinuli ste login. Kick.");
if(response)
{
if(!strcmp(inputtext, PlayerInfo[playerid][pLozinka], false))
Još mi ovo daj
KickTimer
stock apac_Kick(playerid, razlog[])
{
SetTimerEx("KickTimer", 300, false, "d", playerid);
SendClientMessage(playerid, COLOR_APRP, razlog);
return 1;
}
forward KickTimer(playerid);
public KickTimer(playerid)
{
if(fexist(UserPath(playerid)))
{
SacuvajIgraca(playerid);
Kick(playerid);
}
else if(!fexist(UserPath(playerid)))
{
Kick(playerid);
}
return 1;
}
Jasno pise na wikiju http://wiki.sa-mp.com/wiki/Strcmp
This function returns 0 if either string is empty. Check for null strings with isnull(). If you do not, for example, people can login to anyone's account by simply entering a blank password.
[pawn]// Check for null strings with isnull()
if(!strcmp(string1, string2) && !isnull(string1) && !isnull(string2))
// Definition for isnull():
#if !defined isnull
#define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
#endif[/pawn]
jednostavno koristi strlen za duzinu user input
Citat: Butigan.MySql poslato Januar 29, 2018, 10:36:54 PRE PODNE
jednostavno koristi strlen za duzinu user input
Zasto ne bi koristio u if-u
!isnull(inputtext)?