Wysłany: 2014-08-26, 20:37
Loghain
Wiek: 29 Na forum: 4506 dni Posty: 51
Piwa : 1
Mam ma?y problem z rejestracj?, a mianowicie gdy kto? wchodzi pierwszy raz na serwer i nie wpisuj?ca has?a kliknie Rejestracja to poka?e mu ?e nie wpisa? has?a, ale gdy si? roz??czy i wejdzie to ma logowanie x.x
Jak naprawi? to niedopatrzenie?
Kod: #define LOGIN 1 //rejestracja
#define REGISTER 2 //rejestracja
#define DIALOG_STYLE_PASSWORD 3 //rejestracja
Pawn public OnPlayerConnect ( playerid )
{
new Nick [ 30 ]; //rejestracja
new Gname [ MAX_PLAYER_NAME ]; //rejestracja
GetPlayerName ( playerid , Gname , sizeof ( Gname )); //rejestracja
format ( Nick , sizeof ( Nick ), "/Gracze/%s.txt" , Gname ); //rejestracja
if( dini_Exists ( Nick )){ //rejestracja
ShowPlayerDialog ( playerid , LOGIN , DIALOG_STYLE_PASSWORD , " ===== [PL] Polski Power Truck [PPT] =====" , "Witamy ponownie na serwerze [PPT], aby sie zalogowac wpisz\n\t haslo ktore podales podczas rejestracji." , "Login" , "Anuluj" ); //rejestracja
}else{ //rejestracja
ShowPlayerDialog ( playerid , REGISTER , DIALOG_STYLE_PASSWORD , " ===== [PL] Polski Power Truck [PPT] =====" , "Witamy po raz pierwszy na serwerze [PPT], aby sie zarejestrowac\n\t\t wprowadz haslo ponizej.\n\t Uzyj takie hasla ktore zapamietasz !!!" , "Rejestracja" , "Anuluj" ); //rejestracja
} //rejestracja
return 1 ;
}
public OnPlayerDisconnect ( playerid , reason )
{
ZapisGracza ( playerid ); //rejestracja
return 1 ;
}
public OnDialogResponse ( playerid , dialogid , response , listitem , inputtext [])
{
if( dialogid == REGISTER ){ //rejestracja
if( response == 0 ){ //rejestracja
SendClientMessage ( playerid , COLOR_VIOLET , "Anulowales/as rejestracje" ); //rejestracja
Kick ( playerid ); //rejestracja
} //rejestracja
if( response == 1 ){ //rejestracja
if(! strlen ( inputtext )){ //rejestracja
ShowPlayerDialog ( playerid , REGISTER , DIALOG_STYLE_PASSWORD , "===== [PL] Polski Power Truck [PPT] =====" , "Nie podales hasla !!! -.-" , "Rejestracja" , "Anuluj" ); //rejestracja
} //rejestracja
Rejestruj ( playerid , MD5_Hash ( inputtext )); //rejestracja
} //rejestracja
} //rejestracja
if( dialogid == LOGIN ){ //rejestracja
if( response == 0 ){ //rejestracja
SendClientMessage ( playerid , COLOR_VIOLET , "Anulowales/as logowanie" ); //rejestracja
Kick ( playerid ); //rejestracja
return 1 ; //rejestracja
} //rejestracja
if( response == 1 ){ //rejestracja
Login ( playerid , MD5_Hash ( inputtext )); //rejestracja
} //rejestracja
} //rejestracja
return 1 ;
}
stock Rejestruj ( playerid , key [])
{
new Nick [ 30 ];
new Gname [ MAX_PLAYER_NAME ];
GetPlayerName ( playerid , Gname , sizeof ( Gname ));
format ( Nick , sizeof ( Nick ), "/Gracze/%s.txt" , Gname );
dini_Create ( Nick );
dini_Set ( Nick , "Haslo" , key );
dini_IntSet ( Nick , "Kasa" , 1000 );
dini_IntSet ( Nick , "Score" , 0 );
return 1 ;
}
stock Login ( playerid , key [])
{
new Nick [ 30 ];
new Gname [ MAX_PLAYER_NAME ];
GetPlayerName ( playerid , Gname , sizeof ( Gname ));
format ( Nick , sizeof ( Nick ), "/Gracze/%s.txt" , Gname );
if(! strcmp ( key , dini_Get ( Nick , "Haslo" ), false )){
WczytajGracza ( playerid );
}else{
ShowPlayerDialog ( playerid , LOGIN , DIALOG_STYLE_PASSWORD , "Login" , "Zle haslo" , "Login" , "Anuluj" );
}
return 1 ;
}
stock WczytajGracza ( playerid )
{
new Nick [ 30 ];
new Gname [ MAX_PLAYER_NAME ];
GetPlayerName ( playerid , Gname , sizeof ( Gname ));
format ( Nick , sizeof ( Nick ), "/Gracze/%s.txt" , Gname );
if( dini_Exists ( Nick )){
GivePlayerMoney ( playerid , dini_Int ( Nick , "Kasa" ));
SetPlayerScore ( playerid , dini_Int ( Nick , "Score" ));
}
return 1 ;
}
stock ZapisGracza ( playerid )
{
new Nick [ 30 ];
new Gname [ MAX_PLAYER_NAME ];
GetPlayerName ( playerid , Gname , sizeof ( Gname ));
format ( Nick , sizeof ( Nick ), "/Gracze/%s.txt" , Gname );
if( dini_Exists ( Nick )){
dini_IntSet ( Nick , "Kasa" , GetPlayerMoney ( playerid ));
dini_IntSet ( Nick , "Score" , GetPlayerScore ( playerid ));
}
}
Wysłany: 2014-08-27, 01:47
Axel9697
Wiek: 32 Na forum: 5904 dni Posty: 115
Piwa : 44
Dodaj
Kod:
by zatrzyma? wykonywanie reszty kodu po tej linijce
Kod: ShowPlayerDialog(playerid, REGISTER, DIALOG_STYLE_PASSWORD,"===== [PL] Polski Power Truck [PPT] =====","Nie podales hasla ! -.-","Rejestracja","Anuluj"); //rejestracja
Wysłany: 2014-08-27, 10:30
Loghain
Wiek: 29 Na forum: 4506 dni Posty: 51
Piwa : 1
Thx wielkie
Taka oczywisto?? a ja w niej wpad?em ;/
Edit.
A da?oby si? zrobi? ?e jak wpisze x3 razy z?e has?o to dostanie kicka?
Wysłany: 2014-08-27, 11:34
Axel9697
Wiek: 32 Na forum: 5904 dni Posty: 115
Piwa : 44
Jasne, ?e tak.
Zr?b tablic?, kt?ra obejmie wszystkich graczy i przy nieudanym logowaniu sprawdzaj czy zmienna przekracza 2 (kick), a jak nie to dodawaj 1 do tej zmiennej.
Wysłany: 2014-08-27, 12:26
Loghain
Wiek: 29 Na forum: 4506 dni Posty: 51
Piwa : 1
Czyli:
New Login[3]
Login[0] = 1
Login[1] = 2
Login[2] = 3
i potem tam ni?ej z if()?
Wysłany: 2014-08-27, 18:02
kamil445
:D
Wiek: 29 Na forum: 6151 dni Posty: 119
Nick w MP: Czechu
Piwa : 882
nie lepiej
Kod:
potem w tej rejestracji/logowaniu
Kod:
a potem funkcja
Kod: if(login[playerid] == 3)
{
kick(playerid);
return 1;
}
nie zapomnij o zerowaniu po wywaleniu, wiec mozna doda? w onplayerdisconnect lub connect
Kod:
Wysłany: 2014-08-27, 18:23
Loghain
Wiek: 29 Na forum: 4506 dni Posty: 51
Piwa : 1
Wrzuci mi to kto? do kodu u g?ry, bo mi full b??d?w wywala, nwm czemu.
Ja da?em tak:
pod include:
new Login[MAX_PLAYERS];
Potem w :
Pawn stock Login ( playerid , key [])
{
new Nick [ 30 ];
new Gname [ MAX_PLAYER_NAME ];
GetPlayerName ( playerid , Gname , sizeof ( Gname ));
format ( Nick , sizeof ( Nick ), "/Gracze/%s.txt" , Gname );
if(! strcmp ( key , dini_Get ( Nick , "Haslo" ), false )){
WczytajGracza ( playerid );
}else{
ShowPlayerDialog ( playerid , LOGIN , DIALOG_STYLE_PASSWORD , "===== [PL] Polski Power Truck [PPT] =====" , "Wpisales zle haslo, sprobuj ponownie zwracajac uwage na wielkosc liter." , "Login" , "Anuluj" );
Login ++;
if( login [ playerid ] == 3 )
{
kick ( playerid );
return 1 ;
}
}
return 1 ;
}
No i to w connect:
Login[playerid] == 0;
Wysłany: 2014-08-28, 11:36
kazami
Pawner/PTG
Wiek: 27 Na forum: 4596 dni Posty: 405
Nick w MP: adi888
Piwa : 43
nw do czego ci te new Login , ale do stocka nie potrzeba takiego czego? jak new Login.
Poprostu robisz stocka bez rzadnych new
Wysłany: 2014-08-28, 17:25
kamil445
:D
Wiek: 29 Na forum: 6151 dni Posty: 119
Nick w MP: Czechu
Piwa : 882
Stock mo?e si? zwa? tak samo jak zmienna ? wydaje mi si? ?e nie...
Zamiast new Login[MAX_PLAYERS];
daj np new LoginCount[MAX_PLAYERS];
bedzie sie ci kojarzy?o od czego ta zmienna i bd dzia?a?o
masz gotowca (nie sprawdzony, ale powinno trybi?)
Kod:
new LoginCount[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
new Nick [30]; //rejestracja
new Gname[MAX_PLAYER_NAME]; //rejestracja
GetPlayerName(playerid,Gname,sizeof(Gname)); //rejestracja
format(Nick,sizeof(Nick),"/Gracze/%s.txt",Gname); //rejestracja
if(dini_Exists(Nick)){ //rejestracja
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD," ===== [PL] Polski Power Truck [PPT] =====","Witamy ponownie na serwerze [PPT], aby sie zalogowac wpisz\n\t haslo ktore podales podczas rejestracji.","Login","Anuluj"); //rejestracja
}else{ //rejestracja
ShowPlayerDialog(playerid, REGISTER, DIALOG_STYLE_PASSWORD," ===== [PL] Polski Power Truck [PPT] =====","Witamy po raz pierwszy na serwerze [PPT], aby sie zarejestrowac\n\t\t wprowadz haslo ponizej.\n\t Uzyj takie hasla ktore zapamietasz !","Rejestracja","Anuluj"); //rejestracja
} //rejestracja
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
ZapisGracza(playerid); //rejestracja
LoginCount[playerid] = 0;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == REGISTER){ //rejestracja
if(response == 0){ //rejestracja
SendClientMessage(playerid, COLOR_VIOLET,"Anulowales/as rejestracje"); //rejestracja
Kick(playerid); //rejestracja
} //rejestracja
if(response == 1){ //rejestracja
if(!strlen(inputtext)){ //rejestracja
ShowPlayerDialog(playerid, REGISTER, DIALOG_STYLE_PASSWORD,"===== [PL] Polski Power Truck [PPT] =====","Nie podales hasla ! -.-","Rejestracja","Anuluj"); //rejestracja
} //rejestracja
Rejestruj(playerid,MD5_Hash(inputtext)); //rejestracja
} //rejestracja
} //rejestracja
if(dialogid == LOGIN){ //logowanie
if(response == 0){ //pierwszy przycisk
SendClientMessage(playerid, COLOR_VIOLET,"Anulowales/as logowanie"); //rejestracja
Kick(playerid);
return 1;
}
if(response == 1){ //rejestracja
Login(playerid,MD5_Hash(inputtext)); //rejestracja
} //rejestracja
} //rejestracja
return 1;
}
stock Rejestruj(playerid,key[])
{
new Nick [30];
new Gname[MAX_PLAYER_NAME];
GetPlayerName(playerid,Gname,sizeof(Gname));
format(Nick,sizeof(Nick),"/Gracze/%s.txt",Gname);
dini_Create(Nick);
dini_Set(Nick,"Haslo",key);
dini_IntSet(Nick,"Kasa",1000);
dini_IntSet(Nick,"Score",0);
return 1;
}
stock Login(playerid, key[])
{
if(LoginCount[playerid] == 3)
{
kick(playerid);
return 1;
}
new Nick [30];
new Gname[MAX_PLAYER_NAME];
GetPlayerName(playerid,Gname,sizeof(Gname));
format(Nick,sizeof(Nick),"/Gracze/%s.txt",Gname);
if(!strcmp(key,dini_Get(Nick,"Haslo"), false)){
WczytajGracza(playerid);
}else{
LoginCount[playerid]++;
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD,"Login","Zle haslo","Login","Anuluj");
}
return 1;
}
stock WczytajGracza(playerid)
{
new Nick [30];
new Gname[MAX_PLAYER_NAME];
GetPlayerName(playerid,Gname,sizeof(Gname));
format(Nick,sizeof(Nick),"/Gracze/%s.txt",Gname);
if(dini_Exists(Nick)){
GivePlayerMoney(playerid, dini_Int(Nick,"Kasa"));
SetPlayerScore(playerid, dini_Int(Nick,"Score"));
}
return 1;
}
stock ZapisGracza(playerid)
{
new Nick [30];
new Gname[MAX_PLAYER_NAME];
GetPlayerName(playerid,Gname,sizeof(Gname));
format(Nick,sizeof(Nick),"/Gracze/%s.txt",Gname);
if(dini_Exists(Nick)){
dini_IntSet(Nick,"Kasa",GetPlayerMoney(playerid));
dini_IntSet(Nick,"Score",GetPlayerScore(playerid));
}
}
Wysłany: 2014-08-28, 18:11
Loghain
Wiek: 29 Na forum: 4506 dni Posty: 51
Piwa : 1
Thx, dzia?a
Tagi: rejestracja
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: