05.03.2011, 13:47
Hello guys I have a problem with MD5+SALT in my map. I have a no coding passwords but I bought IP Board and I must now code the passwords. Here is some code:
I found in net this but I don't know how replace this with my code.
[code]#include <a_samp>
#include <a_mysql>
#include <sscanf>
#include <md5>
#define DIALOG_ID 12323
#define servname "Role Play"
#define tablename "users"
#define Login "Welcome to "servname"\nPlease write the password"
#define guidname "globuid"
#define name "nickname"
#define player_uid "player_uid"
new globaluid[MAX_PLAYERS];
new playeruid[MAX_PLAYERS];
public OnPlayerConnect(playerid) return ShowPlayerDialog(playerid, DIALOG_ID, DIALOG_STYLE_INPUT, ""servname" » Logowanie", Login, "Zaloguj", "Wyjdź");
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_ID)
{
if(!response) return Kick(playerid);
new str[312];
new hash[256];
new salt[126];
format(str, sizeof(str), "SELECT "tablename"."guidname", "tablename"."player_uid", ipb_members.members_pass_salt FROM "tablename" JOIN ipb_members ON ipb_members.member_id = "tablename"."guidname" WHERE "tablename"."name" = '%s' LIMIT 1", NickName(playerid));
mysql_query(str);
mysql_store_result();
if(mysql_num_rows())
{
mysql_fetch_row_format(str);
sscanf(str, "p<|>dds[126]",
globaluid[playerid],
playeruid[playerid],
salt);
mysql_free_result();
}
else
{
GameTextForPlayer(playerid, "~n~~n~~n~~n~~r~Cant find global account", 2000, 5);
ShowPlayerDialog(playerid, DIALOG_ID, DIALOG_STYLE_INPUT, ""servname" » Login", Login, "Login", "Exit");
mysql_free_result();
return 1;
}
mysql_free_result();
format(hash, sizeof(hash), "%s%s", MD5_Hash(salt), MD5_Hash(inputtext));
format(str, sizeof(str), "SELECT "tablename".*, ipb_members.name, ipb_members.members_pass_hash FROM "tablename" JOIN ipb_members ON ipb_members.members_pass_hash = md5('%s') WHERE "tablename"."player_uid" = %d LIMIT 1", hash, playeruid[playerid]);
mysql_query(str);
mysql_store_result();
if(mysql_num_rows())
{
// Logged! ;]
}
else
{
GameTextForPlayer(playerid, "~n~~n~~n~~r~~h~Bad password !!",5000,5);
ShowPlayerDialog(playerid, DIALOG_ID, DIALOG_STYLE_INPUT, ""servname" » Login", Login, "Login", "Exit");
}
mysql_free_result();
}
return 1;
}
stock NickName(playerid)
{
new nick[MAX_PLAYER_NAME];
GetPlayerName(playerid, nick, sizeof(nick));
return nick;
}[code]
Код:
public OnPlayerLogin(playerid,password[]) { MySQLCheckConnection(); new string2[128]; new playername2[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername2, sizeof(playername2)); MySQLFetchAcctSingle(PlayerInfo[playerid][pSQLID], "Password", PlayerInfo[playerid][pKey]); if(strcmp(PlayerInfo[playerid][pKey],password, true ) == 0 && strlen(password) > 0) { //printf( "gracz interior poczatek logowania = %d ", PlayerInfo[playerid][pInt]); new Data[1024]; new Field[149][64]; SendClientMessage(playerid,COLOR_COM,"A-RP: Proszę czekać, trwa wczytywanie danych..."); MySQLFetchAcctRecord(PlayerInfo[playerid][pSQLID], Data); /*printf("Data: %s",Data);*/ split(Data, Field, '|'); PlayerInfo[playerid][pStatus] = strval(Field[3]); PlayerInfo[playerid][pAdmin] = strval(Field[4]); PlayerInfo[playerid][pGID] = strval(Field[5]); PlayerInfo[playerid][pConnectTime] = strval(Field[6]); PlayerInfo[playerid][pReg] = strval(Field[7]); PlayerInfo[playerid][pSex] = strval(Field[8]); PlayerInfo[playerid][pAge] = strval(Field[9]); PlayerInfo[playerid][pOrigin] = Field[10]; PlayerInfo[playerid][pOnline] = strval(Field[11]); PlayerInfo[playerid][pMuted] = strval(Field[12]); PlayerInfo[playerid][pCash] = strval(Field[13]); PlayerInfo[playerid][pAccount] = strval(Field[14]); PlayerInfo[playerid][pCrimes] = strval(Field[15]); PlayerInfo[playerid][pArrested] = strval(Field[16]); PlayerInfo[playerid][pPhoneBook] = strval(Field[17]); PlayerInfo[playerid][pLottoNr] = strval(Field[18]); PlayerInfo[playerid][pFishes] = strval(Field[19]); PlayerInfo[playerid][pBiggestFish] = strval(Field[20]); PlayerInfo[playerid][pJob] = strval(Field[21]); PlayerInfo[playerid][pPktKarne] = strval(Field[22]); PlayerInfo[playerid][pPayCheck] = strval(Field[23]); PlayerInfo[playerid][pHeadValue] = strval(Field[24]); PlayerInfo[playerid][pJailed] = strval(Field[25]); PlayerInfo[playerid][pJailTime] = strval(Field[26]); PlayerInfo[playerid][pMats] = strval(Field[27]); PlayerInfo[playerid][pDrugs] = strval(Field[28]); PlayerInfo[playerid][pLeader] = strval(Field[29]); PlayerInfo[playerid][pMember] = strval(Field[30]); PlayerInfo[playerid][pLastUpdate] = strval(Field[31]); PlayerInfo[playerid][pRank] = strval(Field[32]); PlayerInfo[playerid][pChar] = strval(Field[33]); PlayerInfo[playerid][pContractTime] = strval(Field[34]); PlayerInfo[playerid][pDetSkill] = strval(Field[35]); PlayerInfo[playerid][pSexSkill] = strval(Field[36]); PlayerInfo[playerid][pBoxSkill] = strval(Field[37]); PlayerInfo[playerid][pLawSkill] = strval(Field[38]); PlayerInfo[playerid][pMechSkill] = strval(Field[39]); PlayerInfo[playerid][pJackSkill] = strval(Field[40]); PlayerInfo[playerid][pCarSkill] = strval(Field[41]); PlayerInfo[playerid][pNewsSkill] = strval(Field[42]); PlayerInfo[playerid][pDrugsSkill] = strval(Field[43]); PlayerInfo[playerid][pCookSkill] = strval(Field[44]); PlayerInfo[playerid][pFishSkill] = strval(Field[45]); PlayerInfo[playerid][pKieszSkill] = strval(Field[46]); PlayerInfo[playerid][pDealSkill] = strval(Field[47]); PlayerInfo[playerid][pSHealth] = floatstr(Field[48]); PlayerInfo[playerid][pInt] = strval(Field[49]); PlayerInfo[playerid][pLocal] = strval(Field[50]); PlayerInfo[playerid][pTeam] = strval(Field[51]); PlayerInfo[playerid][pModel] = strval(Field[52]); PlayerInfo[playerid][pPnumber] = strval(Field[53]); PlayerInfo[playerid][pBMember] = strval(Field[54]); PlayerInfo[playerid][pBLeader] = strval(Field[55]); PlayerInfo[playerid][pPos_x] = floatstr(Field[56]); PlayerInfo[playerid][pPos_y] = floatstr(Field[57]); PlayerInfo[playerid][pPos_z] = floatstr(Field[58]); PlayerInfo[playerid][pCarLic] = strval(Field[59]); PlayerInfo[playerid][pFlyLic] = strval(Field[60]); PlayerInfo[playerid][pBikeLic] = strval(Field[61]); PlayerInfo[playerid][pRowerLic] = strval(Field[62]); PlayerInfo[playerid][pTirLic] = strval(Field[63]); PlayerInfo[playerid][pBusLic] = strval(Field[64]); PlayerInfo[playerid][pBoatLic] = strval(Field[65]); PlayerInfo[playerid][pFishLic] = strval(Field[66]); PlayerInfo[playerid][pGunLic] = strval(Field[67]); PlayerInfo[playerid][pGun][0] = strval(Field[68]); PlayerInfo[playerid][pGun][1] = strval(Field[69]); PlayerInfo[playerid][pGun][2] = strval(Field[70]); PlayerInfo[playerid][pGun][3] = strval(Field[71]); PlayerInfo[playerid][pGun][4] = strval(Field[72]); PlayerInfo[playerid][pGun][5] = strval(Field[73]); PlayerInfo[playerid][pGun][6] = strval(Field[74]); PlayerInfo[playerid][pGun][7] = strval(Field[75]); PlayerInfo[playerid][pGun][8] = strval(Field[76]); PlayerInfo[playerid][pGun][9] = strval(Field[77]); PlayerInfo[playerid][pGun][10] = strval(Field[78]); PlayerInfo[playerid][pGun][11] = strval(Field[79]); PlayerInfo[playerid][pGun][12] = strval(Field[80]); PlayerInfo[playerid][pAmmo][0] = strval(Field[81]); PlayerInfo[playerid][pAmmo][1] = strval(Field[82]); PlayerInfo[playerid][pAmmo][2] = strval(Field[83]); PlayerInfo[playerid][pAmmo][3] = strval(Field[84]); PlayerInfo[playerid][pAmmo][4] = strval(Field[85]); PlayerInfo[playerid][pAmmo][5] = strval(Field[86]); PlayerInfo[playerid][pAmmo][6] = strval(Field[87]); PlayerInfo[playerid][pAmmo][7] = strval(Field[88]); PlayerInfo[playerid][pAmmo][8] = strval(Field[89]); PlayerInfo[playerid][pAmmo][9] = strval(Field[90]); PlayerInfo[playerid][pAmmo][10] = strval(Field[91]); PlayerInfo[playerid][pAmmo][11] = strval(Field[92]); PlayerInfo[playerid][pAmmo][12] = strval(Field[93]); PlayerInfo[playerid][pPayDay] = strval(Field[94]); PlayerInfo[playerid][pPayDayHad] = strval(Field[95]); PlayerInfo[playerid][pCDPlayer] = strval(Field[96]); PlayerInfo[playerid][pWins] = strval(Field[97]); PlayerInfo[playerid][pLoses] = strval(Field[98]); PlayerInfo[playerid][pTut] = strval(Field[99]); // IP [100] PlayerInfo[playerid][pWarns] = strval(Field[101]); PlayerInfo[playerid][pFuel] = strval(Field[102]); PlayerInfo[playerid][pHotdog] = strval(Field[103]); PlayerInfo[playerid][pMarried] = strval(Field[104]); PlayerInfo[playerid][pMarriedTo] = strval(Field[105]); PlayerInfo[playerid][pZastrzezony] = strval(Field[106]); PlayerInfo[playerid][pZezwolenie] = strval(Field[107]); PlayerInfo[playerid][pKartaNFZ] = strval(Field[108]); PlayerInfo[playerid][pKartaBank] = strval(Field[109]); PlayerInfo[playerid][pZastrzeg] = strval(Field[110]); PlayerInfo[playerid][pDowod] = strval(Field[111]); PlayerInfo[playerid][pKelner] = strval(Field[112]); PlayerInfo[playerid][pMogeBron] = strval(Field[113]); PlayerInfo[playerid][pDzwonek] = strval(Field[114]); PlayerInfo[playerid][pDzwiekSMS] = strval(Field[115]); PlayerInfo[playerid][pBMoge] = strval(Field[116]); PlayerInfo[playerid][pGPS] = strval(Field[117]); PlayerInfo[playerid][pBW] = strval(Field[118]); PlayerInfo[playerid][pBWTime] = strval(Field[119]); PlayerInfo[playerid][pTrener] = strval(Field[120]); PlayerInfo[playerid][pSztukaWalki] = strval(Field[121]); PlayerInfo[playerid][pStylChodzenia] = strval(Field[122]); PlayerInfo[playerid][pAdminInfo] = strval(Field[123]); PlayerInfo[playerid][pMask] = strval(Field[124]); PlayerInfo[playerid][pMaskuse] = strval(Field[125]); PlayerInfo[playerid][KillerID] = strval(Field[126]); PlayerInfo[playerid][KillerWeapon] = strval(Field[127]); PlayerInfo[playerid][Samochod2] = strval(Field[128]); PlayerInfo[playerid][AlarmSamochodowy] = strval(Field[129]); PlayerInfo[playerid][pVirtualWorld] = strval(Field[130]); PlayerInfo[playerid][pSTDPlayer] = strval(Field[131]); PlayerInfo[playerid][pMatsHolding] = strval(Field[133]); PlayerInfo[playerid][pBeer] = strval(Field[134]); PlayerInfo[playerid][pWine] = strval(Field[135]); PlayerInfo[playerid][pSprunk] = strval(Field[136]); PlayerInfo[playerid][pJoint] = strval(Field[137]); PlayerInfo[playerid][pHotel] = strval(Field[138]); PlayerInfo[playerid][pHRoom_locked] = strval(Field[139]); PlayerInfo[playerid][pCrash] = strval(Field[140]); PlayerInfo[playerid][pSpawn] = strval(Field[141]); PlayerInfo[playerid][pHire] = strval(Field[142]); PlayerInfo[playerid][pRadio] = strval(Field[143]); PlayerInfo[playerid][pRadioOn] = strval(Field[144]); PlayerInfo[playerid][pRadioChannel] = strval(Field[145]); PlayerInfo[playerid][pFirstEnterGame] = strval(Field[146]); PlayerInfo[playerid][pSArmour] = floatstr(Field[147]); PlayerInfo[playerid][pRadioClient] = strval(Field[148]); mysql_free_result(); } else { gPlayerLogTries[playerid] += 1; if(gPlayerLogTries[playerid] == 3) { ShowPlayerDialog(playerid,2,DIALOG_STYLE_MSGBOX,"Błąd","Podałeś nieprawidłowe hasło.\nPozostała Ci ostatnia prуba.","OK","Anuluj"); } else { ShowPlayerDialog(playerid,2,DIALOG_STYLE_MSGBOX,"Błąd","Podałeś nieprawidłowe hasło. Sprуbuj ponownie.","OK","Anuluj"); } if(gPlayerLogTries[playerid] == 4) { SendClientMessage(playerid,COLOR_COM,"A-RP: Zostałeś zbanowany za 4 nieprawidłowe logowania."); ExBan(playerid,999,"4 nieprawidłowe logowania."); } return 1; } ResetPlayerMoney(playerid); GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]); ConsumingMoney[playerid] = 1; if(PlayerInfo[playerid][pStatus] == -999) //autoban { SendClientMessage(playerid,COLOR_COM,"A-RP: Twуj adres IP został zbanowany, Powуd: Ban Evading."); //Ban(playerid); ExBan(playerid,999,"Ban Evading."); return 1; } else if(PlayerInfo[playerid][pStatus] == -998) //autokick { SendClientMessage(playerid,COLOR_COM,"A-RP: Zostałeś wyrzucony, Powуd: Zablokowane konto."); Kick(playerid); return 1; } else if(PlayerInfo[playerid][pStatus] == -100) { SendClientMessage(playerid,COLOR_COM,"A-RP: Zostałeś wyrzucony, Powуd: Postać uśmiercona."); Kick(playerid); return 1; } else if(GetNumOfUserChars(PlayerInfo[playerid][pGID]) > 1) { SendClientMessage(playerid,COLOR_COM,"A-RP: Nie możesz być zalogowany na dwуch postaciach rуwnocześnie."); Kick(playerid); return 1; } else if(IsBannedUser(PlayerInfo[playerid][pGID])) { SendClientMessage(playerid,COLOR_COM,"A-RP: Ta postać należy do zbanowanego konta."); Kick(playerid); return 1; } PlayerInfo[playerid][pDonateRank] = GetDonate(PlayerInfo[playerid][pGID]); SendClientMessage(playerid,COLOR_COM," "); SendClientMessage(playerid,COLOR_COM," "); SendClientMessage(playerid,COLOR_COM," "); SendClientMessage(playerid,COLOR_COM," "); SendClientMessage(playerid,COLOR_COM," "); SendClientMessage(playerid,COLOR_COM," "); SendClientMessage(playerid,COLOR_COM," "); SendClientMessage(playerid,COLOR_COM," "); SendClientMessage(playerid,COLOR_COM," "); SendClientMessage(playerid,COLOR_COM," "); SendClientMessage(playerid,COLOR_COM," "); getdeatchtimer[playerid] = SetTimer("GetDeath",10000,1); PlayerInfo[playerid][pOnline] = 1; ClearChatbox(playerid, 10); format(string2, sizeof(string2), "A-RP: Witaj %s! Zalogowałeś się jako %s (ID: %d, UID: %d, GID: %d).",GetUser(PlayerInfo[playerid][pGID]),NickName(playerid),playerid,PlayerInfo[playerid][pSQLID],PlayerInfo[playerid][pGID]); SendClientMessage(playerid, COLOR_COM,string2); printf("%s zalogował się.",playername2); if (PlayerInfo[playerid][pDonateRank] == 1) { SendClientMessage(playerid, COLOR_COM,"A-RP: Posiadasz konto sponsora."); } if (PlayerInfo[playerid][pAdmin] > 0) { format(string2, sizeof(string2), "A-RP: Zainicjowano administratora poziomu %d.", PlayerInfo[playerid][pAdmin]); SendClientMessage(playerid, COLOR_COM,string2); format(string2, sizeof(string2), "Zalogowano na poziomie %d.", PlayerInfo[playerid][pAdmin]); AdmLog(playerid, string2); } if(gTeam[playerid] == 0) { gTeam[playerid] = 3; } else { gTeam[playerid] = PlayerInfo[playerid][pTeam]; } AntiCheatProtect[playerid] = 5; gPlayerLogged[playerid] = 1; GetPlayerName(playerid,string2,sizeof(string2)); UnderscoreToSpace(string2); for(new i = 0; i < MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(PlayerInfo[i][pMaskuse] == 1) { //ShowPlayerNameTagForPlayer(playerid, i, 0); } } } SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 998); SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 0); SetPlayerSkillLevel(playerid, WEAPONSKILL_AK47, 0); if(Timestamp() - PlayerInfo[playerid][pLastUpdate] <= 1800) // 1800 { format(string2, sizeof(string2), "%s > Przywracanie pozycji", NickName(playerid)); ShowPlayerDialog(playerid,8830,DIALOG_STYLE_MSGBOX,string2,"Opuszczono grę przed 30 minutami. Czy chcesz przywrуcić ostatnią pozycję?","Przywrуć","Anuluj"); } else SpawnPlayer(playerid); return 1; } public MySQLFetchAcctSingle(sqlplayerid, sqlvalname[], sqlresult[]) { new query[128]; format(query, sizeof(query), "SELECT %s FROM characters WHERE id = %d LIMIT 1", sqlvalname, sqlplayerid); mysql_query(query); mysql_store_result(); if(mysql_fetch_row(sqlresult)==1) { return 1; } return 0; }
[code]#include <a_samp>
#include <a_mysql>
#include <sscanf>
#include <md5>
#define DIALOG_ID 12323
#define servname "Role Play"
#define tablename "users"
#define Login "Welcome to "servname"\nPlease write the password"
#define guidname "globuid"
#define name "nickname"
#define player_uid "player_uid"
new globaluid[MAX_PLAYERS];
new playeruid[MAX_PLAYERS];
public OnPlayerConnect(playerid) return ShowPlayerDialog(playerid, DIALOG_ID, DIALOG_STYLE_INPUT, ""servname" » Logowanie", Login, "Zaloguj", "Wyjdź");
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_ID)
{
if(!response) return Kick(playerid);
new str[312];
new hash[256];
new salt[126];
format(str, sizeof(str), "SELECT "tablename"."guidname", "tablename"."player_uid", ipb_members.members_pass_salt FROM "tablename" JOIN ipb_members ON ipb_members.member_id = "tablename"."guidname" WHERE "tablename"."name" = '%s' LIMIT 1", NickName(playerid));
mysql_query(str);
mysql_store_result();
if(mysql_num_rows())
{
mysql_fetch_row_format(str);
sscanf(str, "p<|>dds[126]",
globaluid[playerid],
playeruid[playerid],
salt);
mysql_free_result();
}
else
{
GameTextForPlayer(playerid, "~n~~n~~n~~n~~r~Cant find global account", 2000, 5);
ShowPlayerDialog(playerid, DIALOG_ID, DIALOG_STYLE_INPUT, ""servname" » Login", Login, "Login", "Exit");
mysql_free_result();
return 1;
}
mysql_free_result();
format(hash, sizeof(hash), "%s%s", MD5_Hash(salt), MD5_Hash(inputtext));
format(str, sizeof(str), "SELECT "tablename".*, ipb_members.name, ipb_members.members_pass_hash FROM "tablename" JOIN ipb_members ON ipb_members.members_pass_hash = md5('%s') WHERE "tablename"."player_uid" = %d LIMIT 1", hash, playeruid[playerid]);
mysql_query(str);
mysql_store_result();
if(mysql_num_rows())
{
// Logged! ;]
}
else
{
GameTextForPlayer(playerid, "~n~~n~~n~~r~~h~Bad password !!",5000,5);
ShowPlayerDialog(playerid, DIALOG_ID, DIALOG_STYLE_INPUT, ""servname" » Login", Login, "Login", "Exit");
}
mysql_free_result();
}
return 1;
}
stock NickName(playerid)
{
new nick[MAX_PLAYER_NAME];
GetPlayerName(playerid, nick, sizeof(nick));
return nick;
}[code]