Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Salke poslato Jul 11, 2021, 10:22:37 PRE PODNE

Naslov: pomoc ?
Poruka od: Salke poslato Jul 11, 2021, 10:22:37 PRE PODNE
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): //
Naslov: Odg: pomoc ?
Poruka od: V01D poslato Jul 11, 2021, 10:38:08 PRE PODNE
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