Am vazut multi playeri care se plang de bugul la data acela cu 99/99/99999999, am decis sa fac un tutorial cum sa scapi de ele, nu este cine stie ce, dar mi-am incerca norocul si vreau sa ii scap de noobi ce fac bugul, unor scripteri incepatori, ce nu au experienta ;).

Dam un search folosind dd/mm/yyyy, apoi la else if(RegistrationStep[playerid] == 2) schimbam tot ce este cu strval in strvalEx, ca sa nu va chinuiti cautand, copiati peste cod asta


Cod:

else if(RegistrationStep[playerid] == 2)
{
new year, month,day;
getdate(year, month, day);
new DateInfo[3][20];
split(text, DateInfo, '/');
if(year - strvalEx(DateInfo[2]) > 100 || strvalEx(DateInfo[2]) < 1 || strvalEx(DateInfo[2]) >= year)
{
SendClientMessage(playerid, COLOR_LIGHTRED, "What is your Birthdate? (Use dd/mm/yyyy)");
return 0;
}
new check = year - strvalEx(DateInfo[2]);
if(check == year)
{
SendClientMessage(playerid, COLOR_LIGHTRED, "What is your Birthdate? (Use dd/mm/yyyy)");
return 0;
}
if(strvalEx(DateInfo[1]) > month)
{
check -= 1;
}
else if(strvalEx(DateInfo[1]) == month && strvalEx(DateInfo[0]) > day)
{
check -= 1;
}
PlayerInfo[playerid][pAge] = check;
format(string, sizeof(string), "Ok, so you are %d year old.",PlayerInfo[playerid][pAge]);
SendClientMessage(playerid, COLOR_YELLOW2, string);
RegistrationStep[playerid] = 3;
SendClientMessage(playerid, COLOR_LIGHTRED, "What is your Origin? (Type in: SF - te vei spawna in SF, LS - te vei spawna il LS)");
return 0;
}


Apoi la sfarsitul scriptului adaugati


Cod:

}
stock strvalEx( const string[] ) // fixing bug with > 50 letters.
{
if( strlen( string ) >= 50 ) return 0; // It will just return 0 if the string is too long
return strval(string);
}


Sper sa va fie de folos