12.12.2010, 19:25
Hey guys,
I have made a dcmd_login command and have found out that I can log in with any password on my account. Can somebody help me fix this.
Dcmd Register and Login command
Would be great to get this fixed
I have made a dcmd_login command and have found out that I can log in with any password on my account. Can somebody help me fix this.
Dcmd Register and Login command
Код:
dcmd_register(playerid, params[]) { new pName[24], pFile[50], plrIP[50]; GetPlayerName(playerid, pName, sizeof(pName)); format(pFile, sizeof(pFile), "/Tsystem/Users/%s.ini", pName); GetPlayerIp(playerid, plrIP, sizeof(plrIP)); if(dini_Exists(pFile)) { SendClientMessage(playerid, COLOR_GRAD1, "You have already registered! Please use /login to login or choose another nickname."); } if(!dini_Exists(pFile)) { if (!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "Usage: /register [password]"); new buf[145]; WP_Hash(buf, sizeof(buf), params); dini_Create(pFile); dini_Set(pFile, "Password", buf); dini_IntSet(pFile, "AdminLevel", 0); dini_IntSet(pFile, "Deaths", 0); dini_IntSet(pFile, "Kills", 0); dini_IntSet(pFile, "Swat", 0); dini_IntSet(pFile, "Money",500); dini_IntSet(pFile, "Score",1); dini_Set(pFile, "PlayerIP", plrIP); SendClientMessage(playerid, COLOR_ORANGE, "You have succesfully registered."); SendClientMessage(playerid, COLOR_ORANGE, "Please use /login to login!"); PlayerInfo[playerid][Registered] = 1; PlayerInfo[playerid][LoggedIn] = 0; gPlayerLogged[playerid] = 0; OnlineTimer[playerid] = SetTimerEx("OnlineTime",60000,true,"i",playerid); } return 1; } dcmd_login(playerid, params[]) { new pName[24], pFile[128], Pass[256], plrIP[50]; GetPlayerName(playerid, pName, sizeof(pName)); format(pFile, sizeof(pFile), "/Tsystem/Users/%s.ini", pName); if(PlayerInfo[playerid][LoggedIn] == 1) { SendClientMessage(playerid, COLOR_LIGHTGREEN, "You are already logged in!"); return 1; } if(PlayerInfo[playerid][Registered] == 0) { SendClientMessage(playerid, COLOR_YELLOW, "You are not registered! Use /register to register."); return 1; } if(sscanf(params, "s", Pass)) { SendClientMessage(playerid, COLOR_WHITE, "Usage: /login [password]"); return 1; } Pass = dini_Get(pFile, "Password"); new buf[145]; WP_Hash(buf, sizeof(buf), params); new PassCheck[145]; if(strcmp(PassCheck, buf, false) == 0) { new str[128]; GetPlayerIp(playerid, plrIP, sizeof(plrIP)); dini_Set(pFile, "PlayerIP", plrIP); if (PlayerInfo[playerid][AdminLevel] == 0) { format(str, sizeof str, "%s you have been succesfully logged in!",pName); SendClientMessage(playerid, COLOR_YELLOW, str); } if (PlayerInfo[playerid][AdminLevel] > 1) { format(str, sizeof str, "%s you have been succesfully logged in, Admin-level: %d",pName, PlayerInfo[playerid][AdminLevel]); SendClientMessage(playerid, COLOR_LIGHTRED, str); SendClientMessage(playerid, COLOR_GREEN,"Your an admin. We hope you wont hack!"); } PlayerInfo[playerid][LoggedIn] = 1; PlayerInfo[playerid][AdminLevel] = dini_Int(pFile, "AdminLevel"); PlayerInfo[playerid][Kills] = dini_Int(pFile, "Kills"); PlayerInfo[playerid][Deaths] = dini_Int(pFile, "Deaths"); PlayerInfo[playerid][SwatRights] = dini_Int(pFile, "SwatRights"); PlayerInfo[playerid][ArmyRights] = dini_Int(pFile, "ArmyRights"); PlayerInfo[playerid][Jailed] = dini_Int(pFile, "Jailed"); PlayerInfo[playerid][Warned] = dini_Int(pFile, "Warned"); PlayerInfo[playerid][Kicked] = dini_Int(pFile, "Kicked"); PlayerInfo[playerid][Banned] = dini_Int(pFile, "Banned"); PlayerInfo[playerid][MinutesOnline] = dini_IntSet(pFile,"MinutesOnline",0); PlayerInfo[playerid][HoursOnline] = dini_IntSet(pFile,"HoursOnline",0); SetPlayerScore(playerid, PlayerInfo[playerid][Score]); GivePlayerMoney(playerid, dini_Int(pFile,"Money")-GetPlayerMoney(playerid)); PlayerInfo[playerid][Registered] = 1; PlayerInfo[playerid][LoggedIn] = 1; } else { new str[128]; WrongPassword[playerid]++; if(WrongPassword[playerid] >= 3) { new year, month, day; getdate(year, month, day); new hour, minute, second; gettime(hour, minute, second); new str2[128], string[128]; format(str2, sizeof(str2), "* %s got kicked: Failed to login.", pName); SendClientMessageToAll(COLOR_LIGHTRED, str2); Kick(playerid); new File:KickFile = fopen("Tsystem/Users/KickLog.txt", io_append); format(string, sizeof string, "[%d/%d/%d]-[%d:%d:%d]: %s has been kicked by the server. [Reason: Entered an invalid password 3 times]\r\n", year, month, day, hour, minute, second, pName); fwrite(KickFile, string); fclose(KickFile); } format(str, sizeof(str), "Invalid password. %d/ You have 3 tries left.", WrongPassword[playerid]); SendClientMessage(playerid, COLOR_LIGHTRED, str); OnlineTimer[playerid] = SetTimerEx("OnlineTime",60000,true,"i",playerid); } return 1; }