Problem(error/warning): LoginPokusaji kako napraviti to
Pawno Code: kako to napraviti
Dio skripte: [ pawn ]//[/pawn]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ]nepotrbeno[ /code ]
Slika/video ingame problema(obavezno ako je ingame problem): //
E ovako, za tako nesto ti je potreban brojac :
[pawn]new loginCount[MAX_PLAYERS]; [/pawn]
Pravimo jednu globalnu promenljivu gde cemo da cuvano login pokusaje igraca.
Najbolje da je pri OnPlayerConnect resetujes na 0 :
[pawn]public OnPlayerConnect(playerid) {
loginCount[playerid] = 0; //Resetujemo je kada se igrac poveze na server
return 1;
}
[/pawn]
Sada u zavisnosti od toga sta koristis za proveru lozinke, uglavnom u dialog_login nadjes gde se proverava da li je igrac uneo pravu sifru. Ako jeste uneo, onda ga uloguje i spawna na server. Ako nije uneo pravu sifru, treba da povecas vrednost promenljive i opet izbacis dialog, to izgleda otprilike ovako :
[pawn]new loginCount[MAX_PLAYERS]; //Deklarisemo novu promenljivu
public OnPlayerConnect(playerid) {
loginCount[playerid] = 0; //Resetujemo je kada se igrac poveze na server
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
if(dialogid == dialog_LOGIN) { //Response za nas dialog Login
if(!response) return Kick( playerid ); //Ako izadje iz dialoga da ga kickuje
if(response) {
if(!strcmp(inputtext, PlayerInfo[playerid][xLozinka], false) && !isnull(inputtext)) {
//Uloguje igraca zato sto je uneo pravu sifru
return 1;
}
else { //Ako promasi lozinku
loginCount[playerid]++; //Povecamo promenljivu za 1
if(loginCount[playerid] == 3) { // Ako je omasio 3 puta
Kick(playerid); //Kick igraca
return 1;
}
//Sada ovde samo opet prikazemo dialog za login i ako hoces mozes staviti broj pokusaja koje ima
}
}
return 1;
}
return 1;
}[/pawn]
Ovo ti je ceo kod, ako ti nesto nije jasno, ti reci