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
Apoi la sfarsitul scriptului adaugati
Sper sa va fie de folos
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